aca405:
Hvala svima, dopada mi se kako se razvija ova diskusija.
Baza na kojoj radim je MS SQL i ne očekujem veliki broj transakcija u sekundi, tako da bih ostavio po strani diskusiju o performansama.
Inače, imamo slučaj sa velikim brojem transakcija na MS SQL i nemamo problema sa tim.
U međuvremenu sam malo čitao na temu Multitenant aplikacija i došao do toga da postoji više načina izolacije po korisnicima:
1. na noviu tabela, u zajedničkoj bazi, gde se u svim tabelama nalazi kolona za ID korisnika čiji su podaci,
2. na nivou shema - više istih tabela kreiranih sa različitim shemama - svaki korisnik ima svoju shemu
3. na nivou baza - tj. svaki korisnik ima svoju bazu sa svim objektima potrebnim za rad.
Više detalja, može se videti na
ovom linku.
Za scenario koji ja razmatram, mislim da mi je je prva varijanta prihvatljiva i da ću ići u tom pravcu razvoj.
Ne planiram da radim specifičnosti tj. da neke tabele menjam samo za neke korisnike već bih držao tabele jednake za sve korisnike, tako da se i tu uklapam u prvi model.
Šifarnik poštanskih mesta mi ne liči na dobar primer gde očekujem da zapne, mada razumem probleme o kojima je pisano.
Mislim da je bolji primer primer sa proizvodima koje recimo prodavnica prodaje, ali i takve stvari iz ugla performansi se mogu poboljšati pravilnim Cluster Index-om po korisniku...
Naravno da će biti slojeva koji će morati da drže biznis logiku i čuvaju konzisetntnost podataka u ovakvom multitenant okruženju, pa mi liči da treba raditi na tome da se umanje rizici greške i kao posledica toga da se podaci kompromituju (u prevodu, puno testiranja :))
Polako se kristališe u kom smeru treba ići pri razvoju ovakvih aplikacija.
Prvo treba predvideti koliko će naša aplikacija imati različitih korisnika. U mom slučaju su to desetine ili stotine. Verovatno neće biti hiljade ili više.
Razdvajanja na novou baza mi liči da bi bilo potrebno za velike firme i primenljivo je održavanje samo za nekoliko takvih klijenata.
Veći broj klijenata bi dovelo u problem rad sa više baza, pa i sa više shema (ova varijanta mi je najmanje primamljiva).
U mom slučaju, gde se broj korsnika meri desetinama ili stotinama, a daleko manje od 100.000, prvi model mi liči kao najprikladniji.
Isto tako, u tom modelu ne vidim ograničenja u dizajnu i ako ih bude 100.000, samo možda treba razmotriti kako poboljšati perfomanse, ali ako dođemo do tog broja, lako ćemo (to su slatke muke) :)