問題タブ [datomic]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
456 参照

json - Datomic での再帰的参照のシリアライズ

Datomic データベースに、他のユーザー タイプに従うことができるユーザー エンティティ タイプがあります。私の問題は、あるユーザーがすでにフォローしている別のユーザーをフォローしているときに発生します。

(Cheshire を使用して) シリアル化しようとすると、属性の無限再帰が原因で (私が推測している) StackOverflowError が発生し:user/follows-usersます。

このような方法で相互に参照する 2 つの Datomic エンティティを (API の json に) シリアル化するにはどうすればよいですか?

基本的なスキーマは次のとおりです。

そして、repl でデータベースがセットアップされると、次のようになります。

0 投票する
1 に答える
122 参照

clojure - datomic free でデータベース関数を使用する場合の FileNotFoundException

名前空間を必要とするデータベース関数を使用すると、FileNotFoundException が発生します。永続データトミック フリー データベースを使用している場合にのみエラーが発生し、メモリ データベースを使用している場合は発生しません。

コメントの 1 行目と 2 行目を評価すると問題ありませんが、3 行目を評価すると例外が発生します。

私のプロジェクトを「見る」ことができるように、datomic で何かを構成する必要がありますか?

0 投票する
1 に答える
137 参照

clojure - スワップを行う慣用的な方法!またはDatomicを使用してアップデート

Clojure アトムを使用して何か (投票など) をカウントしている場合は、次のようにできます。

ここでは、update-in最初に検索することなく、指定されたキーで値を適切に変換します。

Datomic で同じことを達成するにはどうすればよいですか? 私はこのようなことをすることができます...

しかし、クエリを実行し、値を返し、新しい値で処理する必要があるため、少し面倒です。これを行うためのより慣用的な方法はありますか ( aswap!や などupdate-in)?

0 投票する
1 に答える
143 参照

datomic - Datomic のクエリ パス (ツリーのルートからリーフまで属性をたどる)

これらの属性が存在しなくなるまで、同じタイプのエンティティを接続する :node-left と :node-right を持つツリー構造があります。

ルートからリーフへのパスをクエリして、結果が ([ルート、ノード 1、リーフ 11] [ルート、ノード 2、リーフ 21]) 型のベクトルになるようにすることに関心があります。

0 投票する
1 に答える
1348 参照

clojure - Datomic クエリ: 何らかの値を持つすべてのエンティティを見つける

このクエリでは:

:db/valueTypeという名前のプロパティと の値を持つすべてのエンティティを見つけることができます:db.type/string。私の場合、データベースにいくつかのデータがあると、10 個の ID が返されます。

:db.type/stringプロパティ名に関係なく、値が のすべてのエンティティを検索するにはどうすればよいですか? たとえば、次のクエリ:

空集合を返します。私が理解できる限り、Datomic の Datalog_はワイルドカードとして機能し、何にでも一致する必要があるため、2 番目のクエリは少なくとも最初のクエリと同じ数の結果を返す必要があります。

ありがとう...

0 投票する
3 に答える
671 参照

indexing - Datomic ユーザーは、複合インデックスなしでどのように対処できますか?

Datomic では、「ワシントンに住む 50 歳以上の人をすべて検索する」(都市と年齢は異なる場合があります) などのクエリを効率的に実行するにはどうすればよいですか? リレーショナル データベースとほとんどの NoSQL データベースでは、この目的のために複合インデックスを使用します。私が知る限り、Datomic はこのようなものをサポートしていません。

たとえば、中規模の Web アプリをいくつか作成しましたが、複合インデックスがなければ、十分に高速に実行できるアプリは 1 つもありませんでした。Datomic ユーザーはこれにどのように対処していますか? それとも、これに悩まされないほど小さなデータセットで遊んでいるだけですか? 何か不足していますか?

0 投票する
1 に答える
916 参照

clojure - Datomic クエリと遅延

エンティティが遅延しているのに、datomic のクエリ結果が遅延していないことに驚いています。

私が見逃しているこの選択の明白な根拠はありますか? 誰かが (some-fn をマップする (数百万のクエリ結果を含む 100 のクエリ結果を取得)) したいというのは理にかなっているように思えますが、これはエンティティ ID のセット全体の評価を強制することになりますよね?

(エンティティ ID の) 遅延 seq をクエリから直接取得する方法はありますか? それとも、常に最初にメモリにロードする必要がありますか?