architektura bazy danych wielu dzierżawców [zamknięta]

Buduję aplikację SAAS i dyskutujemy o jednej bazie danych na klienta i wspólnych bazach danych. Czytałem dużo, w tym niektóre tematy tutaj w SO, ale wciąż mam wiele wątpliwości.

Nasz plataform powinien być wysoce konfigurowalny przez każdego klienta. (powinni mieć możliwość tworzenia własnych tabel i dodawania niestandardowych pól do istniejących tabel). Wielokrotne podejście do bazy danych wydaje się w tym przypadku świetne.

Problemem jest. moja tabela „użytkowników” powinna znajdować się w głównej bazie danych lub w każdej bazie danych klientów ?. Użytkownik może mieć jedną lub więcej organizacji, więc będzie obecny w wielu bazach danych. A co z tabelami rodzajowymi, takimi jak tabela krajów itp.?

Ma sens być w głównej bazie danych. Ale mam wiele tabel z polem created_by, które mają klucz obcy dla użytkownika. Klient ma także tabele związane z uprawnieniami.

Utracę moc kluczy obcych, jeśli wiele baz danych oznacza więcej zapytań do bazy danych. Wiem, że mogę używać łączenia krzyżowego między bazami danych, jeśli znajdują się na tym samym serwerze, ale wtedy tracę skalowalność. (Być może będę musiał mieć wiele serwerów baz danych w przyszłości). Myślałem o stołach federacyjnych. Nie jestem pewien co do wydajności.

Technologie, których używam, to framework php i symfony 2 oraz mysql dla bazy danych.

Obawiam się również utrzymania takiego systemu. Moglibyśmy stworzyć kilka skryptów do automatyzacji zmian schematu we wszystkich bazach danych, ale jeśli mamy 10 000 klientów, co oznaczałoby 10 000 baz danych.

Jaka jest twoja opinia na ten temat? Główną cechą charakterystyczną mojej aplikacji powinna być elastyczność, więc jeśli klient potrzebuje czegoś bardziej szczegółowego niż baza nie ma, to powinno być możliwe dla niego.

questionAnswers(1)

yourAnswerToTheQuestion