Jestem zaskoczony, że wyniki kwerend w danych nie są leniwe, gdy podmioty są.Datomic zapytania i lenistwo
Czy istnieje oczywisty powód takiego wyboru, którego mi brakuje? Wydaje się rozsądne, że ktoś może chcieć chcieć (mapować some-fn (wziąć 100 zapytań-zawierających-wyniki-miliony)), ale to wymusiłoby ocenę całego zestawu entity-ids, nie?
Czy istnieje sposób, aby uzyskać leniwy seq (entity-ids) bezpośrednio z powrotem z zapytania, czy też zawsze muszą być najpierw załadowane do pamięci, z lenistwem dostępnym tylko poprzez encję?
Nie widzę żadnych oczywistych przesłanek, ale to wygląda na subtelny problem. Zgodnie z dokumentami każdy etap pośredni zapytania musi pasować do pamięci, nawet jeśli podstawowy zbiór danych nie musi tego robić. Wydaje się, że jest to powód, dla którego wynik musi również pasować do pamięci. Zgaduję, że ma to coś wspólnego z tym, jak działa datalog lub jak go realizuje. Nie jest jasne, czy to wymaganie i brak leniwego API zapytań są niejasne, ale to moje najlepsze przypuszczenie. Pamiętaj również, że nawet funkcje agregacji są nadal oznaczone jako beta. –
Co do twojego drugiego pytania, 'datoms' i' seek-datoms' są ci najbliższe: zapewniają leniwy dostęp do surowych danych. –