問題タブ [datalog]
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.
database-design - Datomic のアノテーション付き関係
この SO の質問に関する会話を拡張し、実装に関してさらに詳細を取得したいと考えていました。
私の要件には、管理者がリレーションシップにタグを定義できるようにすることが含まれます。タグの数は任意であり、関与するエンティティは任意であり、関与するエンティティは偶発的ではありません (つまりComponent、エンティティの a ではありません)。
不自然な例として、 aUserは多くの を持つことができますProjects。AProjectは多くの を持つことができますUsers。
管理者は、関係ごとに関連するユーザーに割り当てる任意の数のタグを作成します (例: Owner、ContributorなどVIP) 。UserProject
この回答について私が理解していることから、単純なrefものでは不十分であり、次のような追加のエンティティを作成する必要があります-
関連Project属性
関連User属性
関連Associationする属性
関連Tag属性
これは私が得た限りです。association慣用的なDatomicな方法でエンティティを構築する方法については明確ではありません。
Projectを含むがこれに限定されない、特定の で関連付けられた関係を検索するにUsersはrelationship tag = Contributor、
1) +をドロップし、
refs?経由でデータを取得します。つまり、含むすべての関連付けを返しますProjectUserAssociationsassociation/related-entsUser-Id = foo2) まったく違うもの。
私の質問はref、効率的なルックアップのためにどこに保存すればよいのでしょうか? db.typeの代わりに使用する必要がある別のものstring、または必要な の別の構造associationはありますか? project/associationsとuser/associations refsさえ必要ですか?
洞察力に感謝します。
アップデート
refsもう少し熟考した後、さまざまなエンティティにつまずいたと思います。associations/relatedEnts2 つの Datomic データベース ID + タグを保持し、リストされている他のすべての属性を削除する ref 自体を単純に持つことができるかどうか疑問に思っています。これは理想ですか?
datalog - Datalog で一意性を照会していますか?
Datalog で、他の変数の可能な値ごとに、変数の 1 つに値が 1 つだけあるファクトのクエリを作成することは可能ですか?
たとえば、それぞれにX1つしかないようなすべてを見つけますXYexpr(X, Y)
datalog - Datalog を単独で使用することは可能ですか?
私は現在、クラスでレポート用に Datalog を勉強しています。基本的な構文と基本的な例について説明するだけです。
Datalog は通常、クエリ言語として使用され、通常は Java、Lua、C などの他の言語にのみ実装されていることは知っていますが、Datalog をそれ自体でしか教えることはできませんか、またはそれを実装する別の言語を使用する必要がありますか?簡単な作業プログラムを表示しますか?
clojure - エンティティとその親コンポーネントをコンポーネント ツリーのずっと上にプルできますか?
エンティティとすべてのコンポーネントの親をツリーのずっと上までプルすることは可能ですか?
逆再帰プル。
そうでない場合、どうすればよいですか?
clojure - 同じデータを複数回追加するのは最適ではありませんか?
私は現在、自分のプロジェクトの 1 つで Datomic を使用していますが、質問に悩まされています。
ここに私の問題の簡略版があります:
- 英語の短い文のリストを解析し、完全な文とその単語の両方を Datomic に挿入する必要があります。
- 文のリストを含むファイルが非常に大きい (> 10 GB)
- 同じ文がファイル内で複数回出現する可能性があり、それらの単語も文全体で複数回出現する可能性があります
- 挿入プロセス中に、各文を対応する単語に関連付けるために属性が設定されます。
挿入プロセスを簡単にするために、同じデータを複数回書きたいと思っています (つまり、レコードがデータベースに既に存在するかどうかをチェックしません)。しかし、パフォーマンスへの影響が心配です。
- 同じデータが複数回追加されると、Datomic ではどうなりますか?
トランザクションの前に datom が既に追加されていることを確認する価値はありますか?
Datomic が以前の datom を上書きするのを防ぐ方法はありますか (つまり、レコードが既に存在する場合、トランザクションをスキップします)?
ご協力ありがとうございました
datalog - 2 つのテーブルに基づいてデータログ クエリを作成する必要がありますか?
以下の none_of_manufacturer の Datalog ルールは、航空会社が保有する航空機を所有していない航空機メーカーをリストすることを目的としています。ただし、以下の Datalog のフラグメントは、意図したとおりに動作しません。
上記のクエリを修正するにはどうすればよいですか?
私は1つの提案を考えました:
皆さんはどう思いますか?以下に表を添付しました
アップデート
この問題を解決できるテクニックを発見しました。元のクエリが航空機テーブルにないモデルの製造を返すことを考慮すると、この場合、次の欠落している飛行機 (727,737-200,737,500) の Boing と (MD11) の MD になります。MDプレーンがないため、最終的な結果はMDです。
sqlite - Datalog クエリを SQL(ite) クエリに変換する
Datalogは、リレーショナル データのクエリに適した言語です。シンプルでわかりやすく、構成もよく、構文を追加せずに再帰クエリをサポートします。
SQLiteは、再帰クエリを処理できる強力なクエリ エンジンを備えた素晴らしい組み込みデータベースです。このページの下部にある例を参照して、マンデルブロー集合を生成し、数独パズルの可能なすべての解を見つけてください。
SQLite でサポートされているように、データログ クエリから再帰 SQL に変換するかなり標準的な方法があるかどうか、またはこの機能を提供するライブラリがあるかどうかを知りたいです。