Przymierzam się do nowszego projektu i zastanawiam się nad wyborem rozwiązania - pewnie jakiejś bazy danych (choć niekoniecznie).
Taki opis czego szukam:
- musi być bardzo szybka i ogarniać jednocześnie duże ilości danych
- samych tabel nie będzie dużo
- bez żadnych update'ów czy usuwania danych (chyba, że w jakichś sytuacjach awaryjnych, ale wtedy można przyjąć że cały system leży i admin sobie będzie mógł grzebać do woli)
- będą za to raczej skomplikowane query czytające duże ilości rekordów
- raczej musi być programowalna - tj. zapis jednego rekordu będzie tworzył kilka rekordów (a z powodu wolumenu danych nie chcemy tego słać po sieci)
- dobrze by było, żeby były relacje, ale nie jest to warunek konieczny
- może być jakaś rozproszona, jeśli tylko nie będzie to miało wpływu na latency
- na razie załóżmy, że infrastruktura jest dostępna w dowolnych ilościach, natomiast będzie stała na tyle daleko, że ruch sieciowy jest problemem
- załóżmy też, że programiści którzy będą pracować na projekcie będą ogarnięci, więc nauka jakiegoś dziwnego języka nie jest problemem
- po trzech-czterech dniach będą mogły być archiwizowane (tj. z punktu widzenia bazy danych - usunięte)
- jeśli baza padnie to dane muszą być dostępne po starcie, więc samo in-memory odpada
- jeśli chodzi o ramy czasowe to tak z 80% ruchu będzie się odbywać w ciągu 1:00 - 13:00, jakoś tak między 20:00-21:00 można będzie robić przerwę techniczną (np. wspomniane czyszczenie danych)
- selecty będą głównie latały po danych z ostatniego dnia (na starym systemie to ok. 95% zapytań) i to one mają priorytet jeśli chodzi o czasy wykonywania.
Ewentualnie może ktoś ma inne propozycje, np. jakiś szybki cache + baza danych. Oczywiście nie chciałbym tego wszystkiego pisać prawie od zera (też padł taki pomysł), jedynie zestawić i oprogramować już istniejące rozwiązania - więc pytam o wasze doświadczenia.