Jestem ciekawy, czy ktokolwiek zaimplementował, czy nawet zna jakiekolwiek bitemporalne bazy danych zbudowane na platformach NoSQL (np. Riak).Czy istnieją wzorce projektowe dla bitemporalnych baz danych NoSQL?
Odpowiedz
Z Wikipedii:
„Bitemporal danych to pojęcie używane w bazie danych skroniowej To oznacza zarówno poprawny czas i czas transakcji danych w tabeli bazy danych bitemporal dane są często reprezentowane przez cztery dodatkowe tabeli.. -Kolumny StartVT i EndVT, StartTT i EndTT Każdy interwał czasowy jest zamykany dolną granicą i otwiera się przy górnej granicy. "
Więc nie możesz umieścić tych czterech wartości na swoich danych?
Nie znam żadnego magazynu danych NoSQL, który został specjalnie zaprojektowany do obsługi danych tymczasowych. Aby umieścić ważne i transakcyjnych okresów na danych w Riak trzeba by albo:
Wrap dokumenty/wartości ze struktury, która może pomieścić metadane jak:
{ meta: { ważna: ["2001-11-08", "2001-11-09"], Transakcja: ["2011-01-29 10:27:00", "2011-01-29 10:28:00 "] } ładunek:" To jest rzeczywisty dokument/wartość, którą chcę przechowywać! " }
Utwórz "meta dokument" dla każdego dokumentu i użyj Riak Links, aby je połączyć.
Myślę, że jest to trochę czystsze, ale jeśli trzeba często pobierać te czasy, to ta metoda może być zbyt wolna.
Jeśli chcesz odzyskać dokumenty po raz potem nie sądzę Riak (lub jakichkolwiek innych magazynów danych klucz/wartość, które znam) będzie odpowiedni magazyn danych do wykorzystania. SQL lub ewentualnie jakiś system BigTable może być twoją jedyną dobrą opcją.
Napisałem mały bitemporal, warstwy bazy danych open source oparty na MongoDB:
https://github.com/1123/bitemporaldb
Podczas przechowywania Scala lub Java obiektów, obiekt jest owinięty w ogólnej bitemporal obiektu z bitemporal meta-informacji (prawidłowy czas, czas transakcji). Następnie jest serializowany do json i zapisywany jako BSON w MongoDB.
Obsługuje tymczasowe i czasowe aktualizacje obiektów w sposób przezroczysty. Wyszukiwanie według kontekstu bitemporalnego jest możliwe.
Serwery zorientowane na dokumenty dla danych bitemporalnych są korzystne, ponieważ pamięć zorientowana na dokumenty zmniejsza liczbę sprzężeń do pobierania danych. Połączenia w kontekście bitemporalnym mogą być nieskuteczne i trudne do ręcznego kodowania.
Opinie, uwagi i propozycje funkcji są bardzo mile widziane.
Aby obsługiwać bitemporalny (lub tymczasowy model db), potrzebne są transakcje kwasowe w celu wykonania odpowiedniego DML w celu zaktualizowania i wstawienia rekordów w dwóch wymiarach czasowych (ważny/faktyczny czas i transakcja/godzina systemowa). See for details o modelowaniu czasowym.
Popularna baza danych NoSQL, na przykład Cassandra, MongoDB, Couchbase, nie ma na przykład obsługi ACID, aby wykonać niezbędne operacje aktualizacji/wstawiania rekordów potrzebne do obsługi manipulacji bitemporalnymi. W przypadku tymczasowych i bitemporalnych rekordów baz danych rekordy nie mogą się nigdy nakładać, a rekordy muszą być poprawnie usuwane po zastąpieniu przez kolejne ważne rekordy czasu transakcji.
Baza danych MarkLogic NoSQL twierdzi, że obsługuje bitemporal, ale nigdy nie próbowała go i nie jest open source. Ale możesz przetasować własne rozwiązanie, używając bazy danych ACID, która skutecznie funkcjonuje jako ważny dziennik śledzenia transakcji/transakcji, a następnie użyć NoSQL dla rzeczywistej składnicy danych. Zobacz opis wysokiego poziomu tego approach here.
- 1. Wzorce projektowe dla warstwy dostępu do danych
- 2. Wzorce projektowe paska postępu?
- 3. Wzorce projektowe do agregowania heterogenicznych danych tabelarycznych
- 4. Wzorce projektowe i Scala
- 5. Czy istnieją wytyczne konstrukcyjne dla baz danych dokumentów?
- 6. Wzorce projektowe Zalecenie dla opcji filtrowania
- 7. Czy są jakieś "wzorce projektowe" w C?
- 8. wzorce projektowe dla konwersji rekurencyjnych algorytmów iteracyjnych do nich
- 9. Wzorce i protokoły projektowe aplikacji serwera klienta
- 10. Wzorce projektowe NIE w Gangu Czterech?
- 11. PHP/JavaScript Wzorce projektowe dla infosystemów opartych na Internecie
- 12. Efektywny D: najlepsze praktyki i wzorce projektowe
- 13. Wzorce projektowe: obsługa wyjątków i błędów
- 14. Ktoś używający baz danych NoSQL do przechowywania rekordów medycznych?
- 15. Wzorce projektowe bazy danych/rozważania przy korzystaniu z usług danych podstawowych
- 16. Czy istnieje biblioteka abstrakcji składowania NoSQL/klucz-wartość, podobnie jak JDBC dla baz danych?
- 17. Wzorce projektowe, które mogą zastąpić instrukcje
- 18. Podejścia autoryzacyjne i wzorce projektowe dla aplikacji Node.js
- 19. Czy są jakieś wzorce projektowe używane w .NET Framework?
- 20. Czy mamy wzorce projektowe w C++, jakie mamy w java?
- 21. Jakie są typowe wzorce projektowe w Cocoa Touch?
- 22. Wytyczne projektowania bez schematów dla Google App Engine Datastore i innych baz danych NoSQL
- 23. Zarządzanie zmianami dla graficznych baz danych?
- 24. Baza danych NoSQL dla handlu elektronicznego
- 25. Czy istnieją struktury hurtowni danych?
- 26. Wzorce projektowe JavaScript Pomoc potrzebna: Luźny Powiększanie modułów
- 27. Zasady projektowania, najlepsze praktyki i wzorce projektowe dla C (lub ogólnie programowania proceduralnego)?
- 28. nosql db dla python
- 29. Wzorce projektowe Django - formularze do tworzenia i aktualizowania modelu
- 30. Poszukuję dobrej jakości filmów wideo wyjaśniających wzorce projektowe.
Dodanie tych metadanych jest tylko częściowym rozwiązaniem. Konieczne jest automatyczne zarządzanie tymi metadanymi. Rozważ aktualizację obiektu logicznego tylko na określony czas (rok 2015). Następnie bitemporalna baza danych zapewniłaby, że przed 2015 r. I po 2015 r. Oryginalne wartości pozostaną nietknięte. Pozwoli to również na zapytanie z kontekstem bitemporalnym: jaka była moja wiedza w 2013 roku o stanie obiektu o logicznym id 777 w roku 2015? – user152468