私はMySQLを使用してツールからレポートを保存しています。私はユーザーがデータを照会できる速度と柔軟性に非常に満足しています。このツールには、グラフであるデータもあります。私の質問は、MySQLにグラフを保存するのは良い考えですか?グラフ内のノードおよびエッジの数は数百万であり、クエリは通常グラフトラバーサルです。MySQLにグラフを格納するのは良い考えですか?
答えて
MySQLは特にグラフデータベースとして作成され最適化されていません。良いグラフデータベースであるNeo4Jを試してみてください。
また、グラフのインデックスを作成することもできます。 –
SQLデータベースは一般的にグラフデータをうまく処理しません。問題は、グラフを横断するには、グラフ全体を単一のクエリでメモリにプルしてから操作して変更を保存するか、一度に1つのノードを横断するために大量の結合を実行する必要があることですこれは非常に遅くなります。あなたが見ているスケールのグラフでは、グラフデータベースを使用したり、REDISのようなメモリデータベースを高速キャッシングレイヤーとして使用して、バックグラウンドで永続化する方がよいでしょう。
または、グラフのインデックスを作成することもできます。 –
プレーンSQLは、通常、グラフのデータ構造を操作するには不適切です。ただし、インデックスを作成する方法はあります。
たとえば、あなたが頻繁に更新されない場合は、GRIPP indexを使用すると、グラフトラバーサルクエリを非常にうまく処理できます。後者は、ノードの数やリンクの密度に関係なく、親子関係や深度関連の質問に多かれ少なかれ固定された時間で答えることができます。
または、グラフのインデックスを作成することもできます。^_^+1 – Angad
- 1. データベースにURLエンコードされたテキストを格納するのは良い考えですか?
- 2. AndroidにSQLite Cursorを格納するのは悪い考えですか?
- 3. カスタムチェック例外にデータを格納するのは悪い考えですか?
- 4. ファイルをデータベースに格納する方が良いか、ファイルのパスに格納する方が良いですか?
- 5. DataTableオブジェクトをasp.netセッションに格納するのは悪い考えです。
- 6. mysql接続を静的にするのは良い考えですか?
- 7. *これは良い考えですか?
- 8. mysqlの日時フィールドをインデックスするのは良い考えですか?
- 9. HTTP認証によるApiの資格情報、良い考えですか?
- 10. Googleスプレッドシートに$ .postするのは良い考えですか?
- 11. sitemap.xmlをキャッシュするのは良い考えですか?
- 12. JavascriptによるクライアントサイドのUIレンダリングは良い考えですか?
- 13. ページ数を増やすために行数と行数を格納するのは悪い考えですか?
- 14. コマンドラインによるセキュリティ:それは良い考えですか? (PHP)
- 15. 長い文字列をデータベースに格納するのは良いですか?
- 16. Djangoのテンプレートタグ "with"を使うのは良い考えですか?
- 17. $ rootScopeにユーザデータを格納する - 良いか悪いのですか?
- 18. gitにデータベーススナップショットを格納するための良い戦略は何ですか?
- 19. メモリにデータを格納するのは良い方法ですか?
- 20. mysqlに負の値を格納する
- 21. mongodbに与えられたケースのデータを格納するのに良い構造は何でしょうか?
- 22. MySQLにデータフレームの辞書を格納するための良いアプローチは何でしょうか?
- 23. ASP.NETページプロパティ良い考え方または悪い考え方
- 24. Oracleにミリ秒を格納する最も良い方法は何ですか?
- 25. plistまたはSqliteデータベースにデータを格納する方が良いですか?
- 26. ODataを使用することも良い考えですか?
- 27. 長い文字列を格納するMySQLの最良の方法
- 28. Django:JSを動的に生成するのは良い考えですか?
- 29. テーブルセルにuiwebviewsを追加するのは良い考えですか?
- 30. #includeを名前空間ブロックにラップするのは良い考えですか?
一般的に私はいいえと言います。しかし、それはあなたの質問に依存します。 Mysqlには、明らかに、グラフを扱う際に必要となるかもしれない、あるいは必要でない多くのルートの探索が実装されていません。あなたが5-10のような限定された深さでsearhする必要があるなら、私はmysqlがうまくいると思います。しかし、やはり、あなたのグラフを作成したい*クエリ*と動的な変更*のタイプに依存します。 – vbence
グラフを階層として表すことはできますか? – orangepips
グラフの意味はわかりません。いくつかのデータだけを照会してグラフに変換する場合は、mysqlに格納します。あなたの好みだけでなく、プログラミング言語にも依存する、グラフをいくつか、たとえばgifファイルといっしょに保存する場合。デルファイ? Java? Perl? PHP?デスクトップアプリ。ウェブアプリ。?あなたがより多くの情報を提供しない限り、提案をするのは簡単ではありません。 – Weiyan