Chcę wiedzieć np. kiedy jednostka została utworzona lub zaktualizowana. Czy powinienem utworzyć atrybut, taki jak :created-at
i :update-at
, czy też Datomic ma domyślnie tezy? Lub w dowolny sposób, aby dowiedzieć się, kiedy jednostka została utworzona lub zaktualizowana?Zawiera elementy w metadanych Datomic, takie jak czas utworzenia i aktualizacji?
Odpowiedz
Czas ma fundamentalne znaczenie dla projektu Datomica. Częścią czasu Datomica jest to, że jednostki nie są tworzone lub aktualizowane tak, jak w tradycyjnej bazie danych CRUD, gdzie wiersz jest wstawiany do tabel, a nowe fakty zastępują stare fakty w wierszu. Zamiast tego fakty dotyczące podmiotów są potwierdzane i wycofywane w miarę upływu czasu. Biorąc pod uwagę niezmienną historię, Datomic wie, jak to się stało w obecnym stanie. Można zebrać te informacje na temat struktury danych z czasem bazę Historia:
http://docs.datomic.com/clojure/#datomic.api/history
więc odpowiedzieć na pytanie o dodanej na i aktualizowana-u, na której można polegać Datomic wbudowanego w świadomości czasu . Do sprawdzania, kiedy rzeczy zostały stworzone - tutaj są dwie opcje. Jeśli schemat zawiera unikalny identyfikator pewnego rodzaju, można ograniczyć zapytanie odnosi się do transakcji, gdy atrybut ten został utworzony (powinny być raz, gdy jednostka po raz pierwszy dodane):
(d/q '[:find ?e ?tx-time
:where
[?e :user/id _ ?tx]
[?tx :db/txInstant ?tx-time]]
db)
jeśli można” t polegać na atrybut przy inicjalizacji, można użyć bazy historii podjąć minimalny czas dla wszystkich transakcji odpowiadających jednostce, tak jak w tym zapytania parametrycznego:
(d/q ':find ?e (min ?tx-time)
:in $ ?e
:where
[?e _ _ ?tx _]
[?tx :db/txInstant ?tx-time]
(history db) entity-id)
Należy zauważyć, że w ten sposób będzie wolniejszy, ale potencjalnie bardziej solidne. Jeśli chcesz potwierdzić ostatni fakt ("aktualizacja"), możesz sub max
dla min
.
- 1. Jak odkryć czas utworzenia pliku w Javie?
- 2. Jak zmienić czas utworzenia pliku w C#?
- 3. Datomic zapytania i lenistwo
- 4. Co oznaczają znaczniki metadanych MP4, takie jak "gssd" lub "gsst"?
- 5. Zapytania dotyczące parametrów w Datomic
- 6. zawiera znaki specjalne takie jak & w Androidzie xml
- 7. JSF2 Czas utworzenia komponentu bean ApplicationScope?
- 8. Sprawdź elementy tablicy ciąg zawiera tylko elementy w innej tablicy
- 9. Jak ustawić attributesOfItemAtPath (takie jak data/czas modyfikacji) na iPhonie
- 10. Sprawdź, czy dwa elementy są takie same
- 11. czas aktualizacji każdego rekordu w MongoDB
- 12. Czas utworzenia pliku w OSX przy użyciu Java 7
- 13. Datomic - praca z klauzulą OR
- 14. Data utworzenia w MySQL
- 15. Plik wsadowy do utworzenia folderu w oparciu o bieżącą datę i czas
- 16. sprawdź, czy łańcuch daty zawiera czas
- 17. Uzyskaj czas utworzenia pliku w Pythonie na komputerze Mac
- 18. Jak wyszukiwać elementy, których kolekcja zawiera inny element w Grails?
- 19. Pobierz najnowszą jednostkę z Datomic
- 20. jQuery - jak sprawdzić, czy dwa elementy są takie same?
- 21. Python: Uzyskaj listę wszystkich plików i folderów w katalogu, czas utworzenia, czas ostatniej modyfikacji. Niezależne od systemu rozwiązanie?
- 22. Elementy CKEditor i escaping
- 23. Jak wyłączyć elementy menu w ContextMenuStrip?
- 24. Jak Google oblicza czas oczekiwania i czas odbioru w chrome?
- 25. Ustawianie metadanych w iTextSharp
- 26. FFmpeg metadanych php wrapper
- 27. Jak zaimplementować katalog metadanych i zautomatyzować SQL w bazie danych?
- 28. Jak wyłączyć kolor i usunąć czas
- 29. Czytanie właściwości pdf/metadanych w pythonie
- 30. Jak importować podstawowe elementy i elementy papieru w JSFiddle
dziękuję za odpowiedź, jednak w ten sposób trudno mi było to zrobić. Czy to jest performatyczne? Zwłaszcza w przypadku znalezienia czasu "aktualizacji"? Czy sądzisz, że można utworzyć atrybut "created-at" i "update-at" lub byłoby to marnowanie? Jeśli chcę zamówić w czasie tworzenia, np. Jest to łatwe? I dlaczego nie użyłeś "(history db)" w pierwszym stwierdzeniu? Nie dostałem tego. Dziękuję bardzo. –
Niepotrzebne i nieco odwrotne do zdefiniowania tych atrybutów jest sam *, chyba że * odpowiadają wymiarowi czasowemu poza Datomic (Datomic posiadający zarejestrowane czasy dla twierdzeń o faktach). Indeks dziennika Datomic (zobacz Log API http://docs.datomic.com/log.html) jest zoptymalizowany dla tego typu zapytań opartych na czasie transakcji. –
Możesz również znaleźć sekcję dotyczącą proweniencji z dziennej bazy danych: https://github.com/Datomic/day-of-datomic/blob/master/tutorial/provenance.clj –