Välj SQL (Relationsdatabas) när din data är strikt tabellformad som i ett Excel-ark, t.ex. användare och beställningar. Välj Dokumentdatabas (NoSQL) om datan ser olika ut varje gång eller lagrar chattloggar. Välj en Vektordatabas om du bygger en app som ska låta AI:n läsa och "förstå" tusentals uppladdade dokument (RAG).
SQL: Ordning och reda
En SQL-databas (även kallad relationsdatabas, som PostgreSQL eller MySQL) är som ett oändligt, välorganiserat Excel-ark. Du bestämmer exakt vilka kolumner som finns och vilken typ av data de får innehålla.
När ska du välja detta?
- Om du bygger ett bokningssystem.
- Om du har data som länkar starkt till varandra, till exempel "En användare har gjort tre köp och varje köp har två artiklar".
- Om du behöver absoluta garantier på att ingen data försvinner om strömmen går mitt i ett spardrag.
Dokumentdatabas: Flexibilitet
Dokumentdatabaser (som MongoDB eller Firebase Firestore) lagrar data i något som liknar små textfiler. Varje "dokument" kan se helt annorlunda ut än det förra.
När ska du välja detta?
- Om din app ändrar form ofta och du inte vill bygga om dina tabeller varje gång du lägger till en ny funktion.
- Om du bygger en chatt-app där varje meddelande kan vara text, ibland en bild och ibland en fil.
Vektordatabas: AI-minnet
Vektordatabaser (som Pinecone eller Weaviate) lagrar inte texten som vi läser den, utan som en serie koordinater i en matematisk rymd. Det gör att de kan hitta innebörden av det du söker efter, inte bara exakta nyckelord.
När ska du välja detta?
- Om din app har en funktion där användaren ställer en fråga och en AI svarar baserat på ett stort bibliotek av företagets PDF:er.
- När du bygger en semantisk sökfunktion ("Hitta liknande produkter" även när namnen inte matchar).
Tänk på att vektordatabaser nästan alltid används tillsammans med en SQL-databas. SQL sparar användarens lösenord, vektordatabasen sparar företagets dokument.
Så svarar du AI:n
Nästa gång ditt appverktyg stannar och ber dig fatta ett arkitekturbeslut kan du kopiera och klistra in något av dessa svar beroende på vad du bygger:
"Jag vill använda en SQL-databas, helst PostgreSQL. Ställ upp schemat så att tabellerna är strikt kopplade."
"Sätt upp PostgreSQL för användarhanteringen. Använd sedan en vektordatabas (som Pinecone) för att lagra och söka i dokumenten. Skriv koden som kopplar ihop dem."
Provet: valde du rätt?
Du behöver inte kunna läsa koden för att kontrollera valet. Gör de här tre proven i tur och ordning, direkt i appverktyget:
- Rita upp datan i ord. Skriv ner en enda mening om vad appen sparar: "Varje kund har flera beställningar, och varje beställning har flera rader." Går meningen att skriva med ordet "har flera" två gånger, är det ett tecken på SQL. Låter det i stället som "varje sparad sak kan innehålla lite olika saker", pekar det mot en dokumentdatabas.
- Be om ett provsvar. Skriv till modellen: "Visa mig ett exempel på hur en enda post ser ut i databasen du föreslår, med påhittade värden." Ser du prydliga kolumner som återkommer likadant varje gång är SQL rätt. Ser posterna olika ut från gång till gång passar en dokumentdatabas bättre.
- Ställ sökfrågan högt. Ska appen kunna svara på "hitta det som liknar det här", inte bara "hitta det som heter det här", behöver du en vektordatabas vid sidan av. Kan du formulera alla dina sökningar med exakta namn, datum eller nummer, behöver du den inte — och då ska du inte betala för den.
Om du redan använder PostgreSQL behöver du oftast ingen separat vektordatabas. De flesta moderna PostgreSQL-tjänster kan lagra vektorer själva genom tillägget pgvector. Fråga modellen: "Kan vi använda pgvector i vår befintliga PostgreSQL i stället för en separat vektordatabas?" Blir svaret ja slipper du en extra tjänst att betala för och hålla reda på — och det är i praktiken en månadskostnad mindre i appen. Behöver du senare mer kraft går det att flytta.
Databasvalet är ett av flera beslut som AI-verktyget kommer att be dig ta under bygget. Om du känner igen känslan av att svara ja på något du egentligen inte förstod, är beskriv i stället för att gissa rätt ställe att gå vidare till.