Dzień Dobry.
Przedstawiam problem:
Baza danych do zarządzania produktami:
W nim różne tabelki: np: products
products_locales
W products posiadam informację o produkcie (ogólne niezależne od języka) w products_locales posiadam np:
-id
-id_product
-id_locale / id_lang
I tu pojawia się pytanie: Ponieważ zależy mi też na wydajności bazy (przy odpowiednim obciążeniu)
Co to znaczy "wydajna baza danych" i co to znaczy "odpowiednie obciążenie"?
Co do zasady, poprawnie zaprojektowana baza danych świetnie radzi sobie ze złączeniami.
I co do zasady - lepiej ze złączeniami wewnętrznymi niż zewnętrznymi; indeksy na kluczach obcych się kłaniają.
Ale tu trzeba uważać - ile będzie tych języków?
Kilkanaście? Nie ma sensu przy takim zastosowaniu.
poza tym, to o co pytasz to jest po prostu przedwczesna optymalizacja.
Daj spokój i skup się na logice.
Posiadam już inną bazę danych np general i w niej już posiadam tabelkę locales (z danymi o językach) i teraz zastanawiam się, czy w products_locales odnosić się do general.locales, czy dla każdego klienta stworzyć również własna tabelkę locales.
NIE TWORZYĆ ŻADNYCH OSOBNYCH TABEL.
Wersja 1 za każdym razem odnosić się do locales z głównej bazy danych locales. (Ryzyko że będzie wolniej działać? Za każdym razem robiąc joina na produkt odnosimy się do tabelki z innej bazy daynch)
Wersja 2 każda baza (każdy klient) ma swoją tabelke locales (wtedy będzie dużo powtarzających się informacji bo każdy klient będzie mieć takie samo locales)
To jest zdecydowanie poroniony pomysł.
Jakie rozwiązania proponujecie a może macie swoje własne lepsze rozwiązania?
Tak, macie.
- **Cache **- po co czytać ciągle to samo?
Poza tym, bazy danych są sprytne i naprawdę potrafią używać cache.
Ale zawsze lepiej nie pytać bazy o dane, które się posiada.
-
Database shard
A tu sobie doczytaj, albo i nie bo to raczej nie ma zastosowania w Twoim problemie.
Zresztą, ja tu żadnego problemu nie widzę (jeszcze).
Ale nie sądzę abyś miał tak duże obciążenie, aby w ogóle się tym zajmować.
Dlaczego nie sądzę?
Ponieważ pytanie jest z gatunku coś tam wiem, ale nie mam doświadczenia.
Nikomu bez doświadczenia raczej nie daje się do zrobienia systemu z ekstremalnym obciążeniem.