20

私は新しいプロジェクトを開始しており、ドキュメントストレージ機能としてMongoDBを使用し、ドキュメント間の関係をマッピングするメカニズムとしてNeo4jを使用することを検討しています。次に、RESTAPIを介してクエリの結果を公開したいと思います。この方法でそれを行うことの長所と短所は何でしょうか?おそらく別のNoSQLドキュメントストアを使用してこれを達成するためのより良い方法はありますか?誰かが似たようなことをしようとしたオンラインで見つけることができる例はありますか?

4

6 に答える 6

14

私のデータはすでにmongodbにあるので、私はしばらくの間これら2つを一緒に使用することを考えていました。ただし、neo4jを追加すると、メモリ、ディスクスペースなどのリソースが必要になり、2つのDBの保守に費やされる時間は言うまでもなく、既存のアーキテクチャにDBトップをもう1つ追加したくありません。

私が考えることができるもう1つの問題は、mongodbを使用してデータをシャーディングする場合、これらの新しいシャードを使用してneo4jデータを管理する必要があることです。neo4jでのスケーリングはクラスターを介して行われ、商用エディションのエンタープライズエディションの一部です。

さらに調査したところ、OrientDBはデータをドキュメントおよびそのグラフデータベースとして保存できることがわかりました。

もう1つの方法は、MongoDB自体でリレーションシップを構築し、その上にロジックを記述して、RESTAPIを介してこのロジックを公開することです。

于 2013-02-27T17:10:00.133 に答える
10

MongoConnector用のNeo4jDocManagerに興味があるかもしれません。これは、MongoDBからNeo4jへのデータの一方向のリアルタイム同期を可能にするMongoConnectorプロジェクトの拡張機能です。MongoDBに挿入されたドキュメントは、プロパティグラフに変換され、Neo4jに自動的に挿入されます。MongoからNeo4jに同期されるコレクションとフィールドを構成できます。

ここでの考え方は、データを同期するためにアプリケーション層にコードを記述しなくても、単一のアプリケーションでNeo4jとMongoDBを一緒に使用できるようにすることです。

于 2015-10-28T23:53:23.350 に答える
6

Neo4jが気に入った場合は、Structr(https://github.com/structr/structr、http://structr.org をご覧ください。

Structrを使用すると、Neo4j上にカスタムスキーマを定義でき(Javaの場合、またはUIを介しても0.7から開始)、(ほぼ)本番環境に対応したRESTfulJSONAPIが作成されます。

JSONの「ドキュメント」は、Neo4jのサブグラフのあらゆる種類の集約またはマッピングとして、Structrによってリアルタイムで作成されます。これにより、同じデータに対して任意の数の異なるビューを定義できます。

Structrには、検索(フルテキスト、キーワード/正確、Neo4j空間を含む場所の範囲)、ページング、並べ替え、制約、ユーザー/グループ、アクセス制御、cronのようなバックグラウンドジョブ、メンテナンスコマンド、補足などの機能が組み込まれています。 (ベータ)CRUD操作および基本的なCMS機能を備えたUI。

免責事項:私はStructrの創設者です。

于 2013-02-27T16:10:29.653 に答える
5

最終的に、(バス/電車の検索で)ルーティング計算を行うための「インデックス」としてNeo4jを使用することになりました。データの大部分はMongoDBに保存されていました。2つのデータベースを同期する方法としてMongoConnectorを使用しました。Mongoは、生のJSONデータの操作に優れていました。

最初は「すべて」をNeo4jに保存しようとしましたが、クエリに+2分かかり始めたため、その後は必要最小限のデータのみを保存しました。さらに、Neo4jには、インデックスを作成できるものに制限があります。たとえば、「日付」タイプがないため、日付の範囲クエリは面倒です。また、「スーパーノード」、つまり数千または数十万のリンク(関係)を持つノードがある場合にも問題が発生します。リレーションシップはNeo4jにリンクリストとして保存されるため、ランダムアクセスは非常に遅くなる可能性があります(リレーションシップの検索用)。

Neo4jの使用方法には注意が必要です。最終的には、Neo4jの強みである最短経路計算/検索に使用しました。

詳細については、GraphConnect NY 2013での調査結果のビデオとプレゼンテーションをチェックアウトしてください: https ://vimeo.com/79477603

于 2015-12-28T16:43:01.670 に答える
2

グレムリンを見てみます。

この記事をチェックしてください: http ://thinkaurelius.com/2013/02/04/polyglot-persistence-and-query-with-gremlin/ 個人的に、データを操作するときのGroovy構文は素晴らしいと思います。

于 2013-02-27T17:28:51.517 に答える
1

neo4jでは、リレーションを構築する必要があります。たとえば、mongodbに2人のユーザーがいる場合、1人が次々と続く場合は、neo4jでノードのリレーションを作成する必要があります。代わりに、情報を使用して別のコレクションを作成します。2つのデータベースを1つとして使用する必要があります。

于 2015-02-25T21:30:08.420 に答える