WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Flera databaser eller en stor? (https://www.wn.se/forum/showthread.php?t=1056885)

Johnny Viking 2013-02-18 13:29

Flera databaser eller en stor?
 
Hej! Jag har ett projekt på gång som kan mynna till flertalet kunder under delad scriptbas. Jag undrar dock, bör jag lägga allt i en stor databas, eller ska man dela upp det i flera databaser? En per kund alltså med tabeller för inställningar, kunder, data, osv.

Här är vad jag tror.

Flera databaser:
- Större säkerhet (?) i att en kund inte påverkar en annan, att data kommer på vift, eller att scriptfel inte kan påverka andra kunder
- Färre relationstabeller att hålla reda på
- Enklare SQL-queries = snabbare sajt

Endast 1 databas:
- Långsammare över tid ju mer data som det fylls på med? Förstås beroende på väl optimerade queries och indexar, dock ej expert på det området.
- Alla tabeller och script måste hålla reda på klient-ID för att få ut rätt data (troligen fler rader kod, och risker att tabba sig. Man vill ju inte att en kund ska se en annans data osv...)
- Uppdateringar av databaser, mer avancerat / mer jobb

Kom gärna med åsikter! Idel öra! :)

yakuzaemme 2013-02-18 13:46

Förstår inte riktigt slutprodukten, kan du förklara lite mer? Vad är det du ska bygga upp?

Johnny Viking 2013-02-18 13:57

Bokningssystem för ett företags kunder.

yakuzaemme 2013-02-18 14:01

Jag tror du måste förklara lite mer än så, eller så är jag väldigt trött i skallen. Är tanken att databasen skall innehålla kunddata, inställningar för kunden osv? Isåfall tycker jag du kör på 1 databas. Det blir inte så speciellt mycket svårare queries, bara att säkerställa att varje query körs mot det kundID som är aktuellt.

Yllas 2013-02-18 14:12

Tänk på om du gör en ändring när du har 100 kunder och måste ändra alla dessa 100 databaserna?
Hade lätt kört på 1 databas.

danjel 2013-02-18 14:16

Kanske går att abstrahera koden/arkitektur så du slipper hantera klientID för varje fråga, om du kör på 1 DB.

Jim_Westergren 2013-02-18 14:21

Jag rekommenderar 1 databas. Sedan om du ska skapa nya tabeller för varje kund eller ha få jättestora tabeller beror lite på.

Johnny Viking 2013-02-18 14:26

Använder CodeIgniter och utnyttjar Active Record fullt ut så långt det går.

Just nu i utvecklingen så bygger jag sajten för 1 företag enbart. Det var lite så det började, men nu ser jag möjligheten att sälja det till fler, då det börjar bli väldigt bra. Det är inte tänkt att bli någon mainstream-produkt med sikte på storföretag, utan för mindre företag.

En stor nackdel med flera databaser är ju självklart att det blir mycket att underhålla. Men det är liksom bara ett par rader kod, att byta mellan databaser per kund (styrt av domäninloggningen).

Så att implementera att många ska röra sig i 1 databas är i det här skedet ett mycket större jobb än att välja att utgå från en ny databas med en grundsetup. Dock, är det ju inte alltid så bra att välja enklaste utvägen, om än att den är lockande just nu. :) Funderar på att bygga färdigt sajten till 99% (nog 60-70%) just nu. Det är många saker jag vill få klart först innan jag släpper för att bygga om själva koden.

CodeIgniter stödjer migrering, så det bör ju inte vara ett omöjligt jobb att i ett svep uppdatera flera databaser. Det handlar ju (förhoppningsvis) oftast bara om nya kolumner, och eventuellt flytta på lite data från ett ställe till ett annat. Om ens det.

Johnny Viking 2013-02-18 14:28

Citat:

Ursprungligen postat av Jim_Westergren (Inlägg 20462827)
Jag rekommenderar 1 databas. Sedan om du ska skapa nya tabeller för varje kund eller ha få jättestora tabeller beror lite på.

Visst, ett alternativ vore ju flera tabeller. En per kund osv. Men då snackar vi ju en gigantisk tabelllista. Och jag hatar scrolla, haha!

Då ser jag det nästan enklare och smidigare att ha flera databaser. Det är ju nästan samma sak som att sprida upp det i många tabeller.

tartareandesire 2013-02-18 14:28

Jag hade nog också valt en databas. Det går att skala upp om behovet skulle uppstå och du kan dessutom lägga till lager mellan databas och kund.


Alla tider är GMT +2. Klockan är nu 04:50.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson