問題タブ [graph-databases]
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.
nosql - バックエンドでフレンドシップを処理するのに最適なデータベースはどれですか?
私の最後の質問は主観的であると考えられていたので:( 、より具体的にしようとしています。
ユーザーがお互いに「友達」になれるアプリケーションを PHP で構築しています。これは、グラフ データストアに最も適しているようです...たとえば、従来の RDBM でこのフィールドのセットを使用できます。
ID | ユーザー1 | ユーザー2
重複データを処理する必要があります (id = 1、user1 = Joe、user2 = Jeff、id = 2、user1 = Jeff、user2 = Joe)...
また、1 人のユーザーについて両方の列を検索する必要があります。
特定の友人の友人の検索を実行する場合、再帰は確かにトリッキーになる可能性があります。
- グラフ データベースが最適だと思いますか?
- もしそうなら、どれですか?また、なぜそれがあなたの経験で最高なのですか?
- クライアントはすでに MySQL を持っているため、グラフ ストアを取得するためのオーバーヘッドに値するものはありますか、それとも MySQL に維持しながらフレンドシップに関する主な問題への適切なアプローチはありますか。
モデレーターへの追伸: この投稿にまだ問題がある場合は、この質問をして「建設的な」投稿と見なされる特定の方法があるかどうか教えていただければ幸いです。gmail (joedevon)、つぶやき (joedevon)、コメントに追加してください。あなたに合った方法で...
仲間のプログラマーからの意見が欲しいだけです。問題は一般的であり、機会と問題に満ちており、興味深いものだと思います。オリジナルがSOに適していないと見なされたことに驚いていますが、ルールは...
database - グラフデータベースにスキーマのようなものはありますか?
グラフデータベースにスキーマのようなものはありますか? たとえば、どのタイプのノードが他のどのタイプのノードと関係を持つことができるかを指定できますか?
そのようなスキーマはどのように見えますか?
database - グラフデータベースは最短経路アルゴリズムに適していますか?
私の目的は、道路網の最短経路アルゴリズムを作成することです。
現在、私のアーキテクチャは次のようなものです。PostGIS 対応の PostgreSQL データベースにすべてのデータを保存しています。100,000 のエッジ (ウェイ) を持つテーブルで 3 秒未満しかかからない 1 つを実行しSELECT * FROM ways
、その後、既にメモリに存在するグラフに (Java、Ruby、または何かベースの) 最短パス アルゴリズムを適用します。2 番目の操作は、100,000 個のエッジを持つグラフで約 1.5 秒かかる場合があります。
したがって、次のものが必要です。
- データベースからすべてのウェイをメモリにロードしてグラフを作成するのに 2 ~ 3 秒かかります (ノードはウェイ (エッジ) を持つ 1 つのテーブルに格納されます)。
- すでにメモリ内にあるグラフの最短パスを計算するには、1 ~ 1.5 秒かかります。
これは、pgRouting が行うことと非常によく似ています (私の知る限り、C Boost を使用してグラフをメモリに保存します)。ただし、pgRouting は、同じデータセットで最短パスを計算するのに合計で約 2 秒かかります (はい、高速ですが、これは私にとってはブラック ボックスなので、独自のものが必要です)。
しかし最近、Graph データベースと Neo4j について知りました。彼らのサイトでは、「数百万の道路とウェイポイントのグラフでこれらの計算を1秒未満の速度で実行できるため、多くの場合、K / Vストアを使用してインデックスを事前計算する通常のアプローチを放棄して、ライブ条件に適応し、高度にパーソナライズされた動的な空間サービスを構築する可能性を備えたクリティカル パスにルーティングを配置します。」
質問は次のとおりです。グラフ データベースは、特定の問題で高速になりますか?
問題には次の特性があります。
- データベースは 1 つのテーブル (ウェイ) で構成されます。
- データベースへの唯一のクエリは、すべてのウェイをメモリに取得することです (グラフを作成するため)。
- スケーラビリティは必要ありません。つまり、グラフが大きくならない可能性があります。
graph - neo4j と gremlin を使用してツリー構造を保存する方法
neo4j
ローカル データベースとGremlin
Javaを使用して、次のディレクトリ ツリー構造を保存したいと考えています。
メソッド StorePath(String path) を定義しました。
私が欲しいもの:パス= "Root\Dir2\Dir4\Dir7"でStorePath(パス)を呼び出すと、データは次のように保存されます
ここで、Root と Dir* は空白のエッジを持つ頂点です。Javaコードで私を助けてください。
neo4j - このクエリをneo4jでどのように書くことができますか?
私はneo4jとグラフデータベース全般に非常に慣れていません。アプリのプロトタイプを作成していますが、これらのクエリをどのように記述すればよいかわかりません
私はこのドメインを持っています:
ユーザー レストラン レビュー TypeOfFood
レストランには 1 つまたは複数の TypeOfFood があり、ユーザーはレストランに関するレビューを残します。ユーザーには、レストランが販売する TypeOfFood と一致する、いくつかの好みの食べ物があります。また、ユーザーは、典型的な友人関係で互いに関連しています。
私が書こうとしているクエリのいくつか:
友達が評価した 3 つ星以上のレストランで、私が好きな種類の料理を作るすべてのレストランを教えてください (既にレビューしたレストランを除く)
私が知っているかもしれない友達を提案してください (これは、「私の友達の友達であるが、まだ私の友達ではないすべての友達、何かの順序で並べる必要があると思います)
database - Graph データベースでのオブジェクト指向プログラミング
グラフ データベースは、データをノード、プロパティ、およびリレーションとして格納します。クエリに基づいてオブジェクトから特定のデータを取得する必要がある場合は、複数のオブジェクトを取得する必要があります (クエリには多くの結果が含まれる可能性があるため)。
グラフ データベースでのオブジェクト指向プログラミングにおける次の単純なシナリオを考えてみましょう。
各ユーザーがオブジェクトとして保存されるユーザーの (グラフ) データベースがあります。特定の場所に住んでいるユーザーのリストを取得する必要があります (場所のプロパティはユーザー オブジェクトに格納されています)。それで、どうすればいいですか?つまり、何かを行う必要があるたびに不要なデータが取得されるということです (この場合、ユーザー オブジェクト全体を取得する必要があるかもしれません)。グラフデータベースでは関数型プログラミングの方が優れているのではないですか?
この例は、私の頭に浮かんだ上記の質問の単なる例えです。ベンチマークとして使用しないでください。では、グラフ データベースでのオブジェクト指向プログラミングはどれほど優れているのかという疑問が残ります。
mongodb - 複数のデータベース タイプを使用して単一のアプリケーションでデータをモデル化する
アプリケーションのデータ モデルを異なるデータベース システムに分割することは理にかなっていますか? たとえば、アプリケーションはすべてのユーザー データと関係をグラフ データベース (関係の格納に最適) に格納し、その他のデータは CouchDB や MongoDB などのドキュメント データベースに格納します。これには、ユーザー グラフ データベースがドキュメント データベース内の一意の ID を参照する必要があり、その逆も同様です。
これにより、データ モデルとアプリケーションが複雑になりすぎていませんか? それとも、アプリケーションをスケーリングするために、両方のタイプのデータベース システムを最大限に活用していますか?
graph-databases - Gremlin で 2 つの頂点を「結合」する方法は?
Gremlin コンソールで問題が発生しました。これが私のスキーマです。
知っている:
- ID 1 (頂点)
- ID 3 (頂点)
- レーベル: "created" (エッジ)
ID9(エッジ)を取得したい
v = gv(1)
v.outE("作成").id
「作成された」エッジが1つしかない場合にのみ機能します
nosql - どのグラフ データベースを使用するか
バイナリ データを格納し、水平方向にスケーリングし、オプションで格納されたデータのバージョン管理を提供できるオープンソースのグラフ データベースはありますか?
膨大な量のデータベースに圧倒されていますが、必要な機能をすべて備えているデータベースはないようです。
graph-databases - グレムリンの頂点のIDとマップを取得しますか?
gv(1).id
頂点1のIDを取得します。
gv(1).map
頂点1のプロパティを取得します。
しかし、IDとプロパティを同時に含むハッシュを取得するにはどうすればよいですか?