[解決済み] Graph-based Databases (http://neo4j.org/)のユースケースは?[クローズド]
質問
私はリレーショナルDBをよく使っていますが、他のタイプにも挑戦してみることにしました。
この特定の製品は良さそうで、期待できそうです。 http://neo4j.org/
グラフベースのデータベースを使ったことがある方はいらっしゃいますか?ユーザビリティの観点から、どのような長所と短所がありますか?
実稼働環境でこれらを使用したことがありますか?それらを使用するようになった要件は何ですか?
どのように解決しましたか?
前職でグラフデータベースを使ったことがあります。neo4j を使っていたわけではなく、Berkeley DB の上に構築された社内のものでしたが、似たようなものでした。それは本番で使用されていました (現在もそうです)。
私たちがグラフ データベースを使用した理由は、システムによって保存されるデータと、システムがそのデータに対して行う操作が、まさにリレーショナル データベースの弱点であり、グラフ データベースの強味であったからです。システムは、固定スキーマを持たず、関係によって結ばれたオブジェクトの集合を保存する必要がありました。データについて推論するために、システムは、グラフ データベースでは数回のトラバーサルになるけれども、SQL では非常に複雑なクエリになるような多くのオペレーションを行う必要がありました。
グラフモデルの主な利点は、迅速な開発期間と柔軟性でした。既存のデプロイメントに影響を与えることなく、新しい機能をすばやく追加することができました。潜在的な顧客が独自のデータをインポートして、私たちのモデルの上に接ぎ木したい場合、通常、営業担当者がその場で行うことができます。柔軟性は、新しい機能を設計する際にも役立ち、硬直したデータモデルに新しいデータを押し込もうとする手間を省くことができました。
奇妙なデータベースを持つことで、他の多くの奇妙な技術を構築することができ、競合他社の製品との差別化を図るための秘密のソースがたくさん得られました。
主な欠点は、私たちが標準的なリレーショナル データベース技術を使用していないことで、これは顧客が企業である場合に問題となることがあります。当社の顧客は、なぜ当社のデータを自社の巨大な Oracle クラスターにホストできないのかと尋ねてきました (当社の顧客は通常、大規模なデータセンターを持っていました)。実際にチームの一人がデータベースレイヤーをOracle(またはPostgreSQL、MySQL)を使うように書き直しましたが、オリジナルより若干遅くなってしまったのです。少なくともある大企業では、Oracleオンリーのポリシーまでありましたが、幸運にもOracleがBerkeley DBを買収してくれました。また、私たちは多くの追加ツールを書かなければなりませんでした。たとえば、Crystal Reports をそのまま使用することはできませんでした。
グラフデータベースのもうひとつの欠点は、私たちが自分たちで構築したことで、問題 (通常はスケーラビリティ) にぶつかったとき、自分たちで解決しなければならなかったことです。もし私たちがリレーショナル データベースを使用していたら、ベンダーは 10 年前にすでにその問題を解決していたことでしょう。
もしあなたが企業顧客向けの製品を作っていて、あなたのデータがリレーショナル モデルに適合するならば、可能であればリレーショナル データベースを使いましょう。もし、アプリケーションがリレーショナルモデルには合わないが、グラフモデルには合うのであれば、グラフデータベースを使いましょう。もし、他のものにしか当てはまらないのであれば、それを使ってください。
もしアプリケーションが現在のblubアーキテクチャに適合する必要がなければ、グラフデータベース、CouchDB、BigTable、またはあなたのアプリケーションに適合し、あなたがクールだと思うものを使ってください。それはあなたに利点を与えるかもしれませんし、新しいことを試すのは楽しいことです。
あなたが何を選んだとしても、データベースエンジンを構築するのが本当に好きでない限り、データベースエンジンを自分で構築しないようにしてください。
関連
-
この操作を行うには、少なくとも1つのSUPER権限が必要です。
-
pymongo.errors.OperationFailure:オーバーフローソートステージのバッファリングデータの使用量が内部制限を超える
-
sql common mistake of incorrect predicate orderConversion failed when converting varchar value 'abc' to data type int
-
mysql データが長すぎて列 xxx の解決策にならない
-
DB2におけるNULLおよびNULL処理
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] データベースの項目はソース管理をしていますか?[クローズド]。
-
gem install mysql reports extconf.rb failed error.
-
データファイルのsqlldrフィールドが最大長を超えています。
-
[解決済み】Laravelで複数のデータベースを使用する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ERROR 1046 (3D000)の解決策です。MySQLでアカウント削除時にデータベースが選択されない問題
-
SocketTimeoutExceptionが発生しました。読み取りがタイムアウトした問題のトラブルシューティング
-
[Mac] sudo mongod コマンド、プロンプトコマンドが見つかりません。
-
は、GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
ORA-30926: ソース・テーブルの安定した行のセットを取得できませんか?
-
mysql import error [Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'.
-
2021年版Redisインタビューの質問(継続更新中)
-
[解決済み] redis-serverを停止するにはどうすればよいですか?
-
Net connection pool configuration Timeout expired. 操作の完了前にタイムアウト時間が経過したか、サーバーが応答していない。"
-
[解決済み] NoSQLデータストアを使用して、どのようなスケーラビリティの問題が発生しましたか?[クローズド]