2017-07-13 14 views
2

データベースd上の任意のデータクエリqが与えられた場合、qからクエリxを導き出すことができます。 qのd? q上のqの結果は、r上のqの結果と等しくなければならない。Datomic - 任意のクエリに関連するすべてのデータを取得する

datascriptクライアントとdatomicを同期しようとしています。私はすべてのクエリを事前に知っており、idはクライアント側クエリに関連するデータムに限定されたdatascriptで自分のdatomicデータベースのサブセットを作成するのが好きです。プレースホルダーが期待するのは、任意のクエリー入力パラメーターに対して同じ効果が得られると期待していますが、簡単にするために、パラメーター化されたクエリーを想定していません。

私は、それを変更してdbに対して実行し、それらのすべてのエンティティに触れることで、クエリによって返されたすべてのエンティティIDを取得できますが、エンティティのサブセットのみを返すより効率的なものを期待しています最初にqを実行しなくても、クエリALONEから導き出すことができます。

ありがとうございました。

答えて

3

私はそうは思わない - クエリは直接datomsで動作しません。データベースにクエリを実行するとデータムから始まり、セットに変換され、その後のすべての操作はセットで行われます。これにより、Datomicインデックスで実行するのと同じ方法で、クエリを任意のコレクションで実行できます。

https://github.com/mpdairy/poshは、クエリの分析を試みて、どのデータムに接触するかを判断しようとしました。多分それを見て?

+0

ありがとうNikita、少なくとも私はすべてのエンティティIDをバインドし、追加されたすべてのトランザクションのdatomicクエリをクエリを変更できるようにする必要がありますか?これらの団体には権利がありますか?それはあまり効率的ではありませんが、関連するすべてのデータが得られるはずですか? – Scott

+0

あなたのクエリに述語がなく、ルールがあり、常に同じDBをクエリするなら、それはできます –

関連する問題