1

非常にスケーラブルな階層型データストアを実現するための優れたアイデアを持っている人はいますか? 迅速な追加と、サイトの多くのユーザーが階層内の特定のノードの下にあるノードの数に関するレポートを要求する機能が必要です。

これがシナリオです....

1 時間ごとに非常に多くのノードが追加されます。1 時間あたり 100 万ノードを追加したいとします。それらは階層全体に現れる可能性があります。理想的には数十億ノード規模ですが、目標としては 5,000 万ノードです。特定のポイントより下のノードの数をいつでも計算できる必要があり、多くの人が同時にこれを行う可能性があります。これは、多くのユーザー (おそらく 100,000 人の同時接続ユーザー) が一度に要求するレポートと考えてください。特定のノードの下にあるすべてのノードを要求する場合があります。

データベースは、隣接リスト (迅速な挿入、遅いレポート) としてフォーマットされたフラット テーブルから読み取る単一プロセスによって作成されるか、データストアが存在する場合に Web サイトのユーザーが階層を直接更新する標準設計のいずれかです。作成される膨大な数のノードに対処するため。

Treebeard と MySQL を使用して、これを Django に既に実装しています。私はマテリアライズド パス メソッドを使用していますが、これはかなり優れていますが、比較して超高速が必要です。30,000 ノードのデータストアを使用して、2 年前のラップトップで実行して、ツリーの下部で 1 分あたり 120 回の挿入を達成しています。私は明らかにこれ以上のものを望んでおり、おそらく使用するより良いデータストアがあると思います. PyTables、BigTable、MongoDB、または Cassandra でしょうか?

Python/Django への簡単な統合は良いことですが、必要に応じてシステムのこの部分をいつでも別の言語で書くことができます。フラットなデータストアから読み出された単一のプロセスを使用して、レポートに最適な非常に効率的な階層データストアに処理された場合、トランザクションの必要性を否定する同時実行性の問題は発生しないと思います。

とにかく、始めるには十分な情報です。これは適切なテクノロジーを使えば簡単ですか?

4

1 に答える 1

1

Neo4J グラフ データベースをご覧になりましたか? それはかなり有能なようで、PythonラッパーDjango の(開発中の)サポートがあります。Neo は Java で動作し、Jython または JPype と CPython のいずれかで使用できます。

于 2010-08-27T10:01:56.653 に答える