Wat is een database?
Denk aan een archiefkast op kantoor. Elke la heeft een eigen onderwerp: klanten, bestellingen, facturen. In elke la zitten mappen die er allemaal hetzelfde uitzien. Op elk formulier staan dezelfde vakjes, in dezelfde volgorde. En op de kast hangt een kaartje met de regels. Een factuurnummer komt maar één keer voor. Een bestelregel hoort bij een bestelling die ook echt in de kast zit.
Zo werkt een database ook. Een la heet daar een tabel. Een map is een rij. Een vakje op het formulier is een kolom. De regels op het kaartje schrijven we vooraf op, en de database houdt zich eraan. Probeer je een tweede factuur met hetzelfde nummer op te slaan, dan weigert hij dat.
Vergelijk dat met losse Excel-lijsten. Die zijn handig, maar iedereen kan overal alles typen. De ene keer staat een prijs in euro's, de andere keer met een komma te veel. Er ontstaan kopieën, zoals "voorraad-definitief-2". En werken twee mensen tegelijk in hetzelfde bestand, dan wint wie het laatst opslaat. Een database is de goed geordende archiefkast. Excel is de stapel losse lijstjes op het bureau. Meer over die overstap lees je in van Excel naar je eigen systeem.
De database zelf zie je niet. Je werkt in een scherm in de browser: een lijst met bestellingen, een voorraadoverzicht, een knop "factuur maken". Achter dat scherm haalt het programma de gegevens uit de database en zet het nieuwe gegevens er weer in.
Waar wij het voor gebruiken
Onze systemen met bestellingen, facturen of klanten gebruiken SQLite. Dat is een database die als één bestand op de server staat, naast het programma. Er hoeft geen aparte databaseserver bij te draaien. SQLite is gratis en bestaat al lang. Hij zit ook in veel telefoons en browsers.
Zo gebruiken we hem in ons eigen werk:
- Voorraadsysteem.com. Voorraad, bestellingen van Shopify en bol, verzendlabels en facturen. Het staat in één database, verdeeld over bijna zestig tabellen. Elke klant heeft een eigen omgeving met een eigen database. Zo blijven de gegevens van verschillende bedrijven gescheiden.
- De administratie van Broer Collective. Onze eigen klanten, offertes, facturen en abonnementen. Factuurnummers lopen per jaar door, en de database laat geen twee documenten met hetzelfde nummer toe.
- PandInfo. De rapporten over een adres, de bestellingen en de betalingen. Een rapport bewaren we zoals de klant het zag, zodat het later precies zo terug te zien is. De bewaartermijnen staan in het programma zelf. Een gratis voorproef wordt na 90 dagen anoniem gemaakt. Een bestelling blijft zeven jaar staan, vanwege de bewaarplicht. Het opruimen gaat vanzelf.
- Lichthoek. De webshop bewaart zijn producten, de bestellingen en een wachtrij. Een betaalde bestelling gaat eerst in die wachtrij en daarna naar het voorraadsysteem. Lukt dat even niet, dan blijft hij in de wachtrij staan en probeert het programma het later opnieuw. Bedragen staan als hele centen in de database. Zo ontstaan er geen afrondingsverschillen.
- Nummerbordcheck.nl. De bezoekcijfers, en een tussenopslag (in het Engels: cache) voor tellingen van de RDW. Een antwoord dat we al hebben, hoeven we dan een dag lang niet opnieuw te vragen. Gegevens over bezoeken gaan na 90 dagen vanzelf weg. Alleen de totalen per dag blijven langer staan.
Zo bouwen we het
- Eerst de indeling. Voordat er gegevens in komen, schrijven we op welke tabellen er zijn en welke regels gelden. Bijvoorbeeld: een bestelregel hoort bij een bestaande bestelling, en een ordernummer komt één keer voor.
- Meegroeien zonder opnieuw te beginnen. Komt er later een vakje bij, dan zet het programma die kolom er bij het starten zelf bij. Wat er al in staat, blijft staan.
- Gegevens los van de code. De database staat in een eigen map op de server, apart van het programma. Bij een update vervangen we alleen het programma, de map met gegevens blijft staan.
- Testen met verzonnen gegevens. We testen met verzonnen gegevens in dezelfde vorm als die van jou. Met de echte gegevens kijkt je broer zelf.
- De AI-hulp ziet de opbouw, niet de inhoud. We bouwen met hulp van AI. Die mag de code en de indeling van de database zien, maar niet de gegevens die jij erin zet.
- Pas live na controle. Elke wijziging gaat eerst door onze tests. Daarna leest een aparte AI-hulp alles nog eens na, en live gaat het pas na het akkoord van je broer.
Lezen en schrijven tegelijk
Bij Voorraadsysteem.com, PandInfo, Lichthoek en Nummerbordcheck.nl staat SQLite in de WAL-stand. WAL staat voor "write-ahead log": een logboek waar nieuwe wijzigingen eerst in komen. Het voordeel is dat lezen en schrijven elkaar minder in de weg zitten. Iemand kan een lijst bekijken terwijl er net een bestelling binnenkomt. Moet een tweede schrijver wachten, dan wacht hij even in plaats van meteen een foutmelding te geven. In Voorraadsysteem.com wacht hij tot 15 seconden. Daar worden meerdere verzendlabels tegelijk gemaakt.
Een kopie die klopt
Een database kun je niet zomaar kopiëren terwijl het programma erin schrijft. Dan kan de kopie half zijn. Daarom maken we elke dag een kopie met de backup-functie van SQLite zelf. Die maakt een nette momentopname, ook als het programma doorwerkt.
Waarom SQLite vaak genoeg is
Voor een mkb-bedrijf is SQLite vaak een goede keuze. Een paar redenen:
- Eén bestand. Makkelijk te kopiëren en te verhuizen.
- Snel. Het programma leest de gegevens direct van de schijf van dezelfde server. Er zit geen netwerk tussen.
- Weinig onderhoud. Er is geen aparte databaseserver die bijgewerkt, beveiligd en bewaakt moet worden. Minder onderdelen betekent minder dat stuk kan gaan.
- Groot genoeg. Tienduizenden bestellingen of facturen zijn voor SQLite weinig.
Er is één grens. SQLite laat één schrijver tegelijk toe. Lezen kan door veel mensen tegelijk, schrijven gaat om de beurt. Bij een webshop, een kassa of een administratie gaat dat zo snel dat je er niets van merkt. Maar zijn er heel veel mensen die tegelijk en de hele tijd iets opslaan? Of moeten meerdere servers dezelfde gegevens delen? Dan is een databaseserver, zoals PostgreSQL, een betere keuze. Dat bespreken we vooraf, als we je systeem ontwerpen.
| SQLite past goed | Kies iets anders |
|---|---|
| Een systeem op één server | Meerdere servers die dezelfde gegevens delen |
| Veel lezen, af en toe schrijven | Heel veel mensen die tegelijk en steeds opslaan |
| Een webshop, kassa, administratie of rapport | Een platform met heel veel gebruikers tegelijk |
Wat jij ervan merkt
- Eén versie van je gegevens. Wat je in je systeem bijwerkt, staat binnen een minuut ook in je webshop. Er zwerven geen oude lijstjes rond.
- Snelle schermen. Een lijst met bestellingen of een voorraadoverzicht staat er meteen.
- Overzichten uit dezelfde bron. Een factuur, een rapport of een pdf maken we uit de gegevens in de database. Lees meer bij rapporten en pdf's.
- Wij houden het in de gaten. We kijken of alles draait, en grijpen in als het nodig is.
- Je gegevens blijven in Europa. Onze server staat in een datacenter binnen de EU.
Wat het kost
Een database is geen los product. Hij zit in elk systeem dat we bouwen. Je betaalt dus voor het systeem, niet apart voor de database. Een paar prijzen om mee te rekenen:
- Gegevens overzetten: vanaf € 350. Je lijsten uit Excel of je oude systeem, opgeschoond en in de nieuwe database.
- Een scherm of onderdeel op maat: vanaf € 650. Bijvoorbeeld een nieuw overzicht op gegevens die je al hebt.
Een systeem met een database moet blijven draaien, dus het zit in een pakket. Kleine broer is vanaf € 19 per maand, plus eenmalig bouwen vanaf € 495. Grote broer is vanaf € 68 per maand, zonder opstartkosten. Hosting, controles en de dagelijkse kopie zitten erin. Alle bedragen zijn exclusief btw. Je krijgt eerst een offerte. Alles op een rij staat bij de prijzen.
Wat we eerder bouwden
- Voorraadsysteem.com. Voorraad, bestellingen, labels en facturen, voor elke klant in een eigen omgeving met een eigen database.
- PandInfo. Rapporten over een adres, met bestellingen en betalingen, en bewaartermijnen die het programma zelf bijhoudt.
- Lichthoek. Een webshop met ruim 3.800 producten, waar bestellingen via een wachtrij naar het voorraadsysteem gaan.
- Nummerbordcheck.nl. Een gratis kentekencheck, met bezoekcijfers die na 90 dagen vanzelf verdwijnen.







