2

シャードを使用するWebアプリケーションにDB接続プールを実装するための最良の手法は何だろうと思っていました。私が言えることから、ほとんど(すべて?)のオープンソース実装は、背後にある単一のデータベースしかサポートしていません。少なくとも、シャードをサポートするものは見つかりませんでした。

また、シャードを使用していても、他のデータベースと同じスキーマがすべてのデータベースにあるわけではありません。それが重要かどうかはわかりません。

これまでに思いついた唯一の解決策は、複数の異なるプールの上に配置されるレイヤーを作成することです。それぞれの個別のプールは、利用可能な単一のデータベース実装のいずれかです。

これに対する解決策はすでにありますか?そうでなければ、最高のテクニックは何でしょうか?

前もって感謝します、

スティーブン。

4

3 に答える 3

4

シャーディングをサポートするオープンソースの実装はないと思います。たぶん、複数のデータベースプールの上にレイヤーを作成することはそれほど難しくないので、本当の必要はありません。複数のプールを追跡するには、シャードマッピング関数(ハッシュ関数など)とマネージャークラスのみが必要です。

すべてのデータベースが同じスキーマを持っているわけではないことが心配な場合は、追加のスキーマ追跡構成をマネージャークラスに配置して、どのシャードがスキーマを提供できるかを認識できるようにすることができます。つまり、dbプールに加えて、スキーマを追跡して情報をシャーディングする必要があります。プールから適切なシャードをプルする方法を決定するためにシャード構成が必要になるため、これは実際にはそれほど追加の作業ではありません(たとえば、ユーザーID mod 10 = 1はシャード1からプルする必要があります)

幸運を

于 2009-09-22T16:36:59.247 に答える
1

現在使用しているテクノロジースタックは何ですか?Hibernateにシャーディングプロジェクトがあることは知っていますが、私はそれを使用したことがなく、ポッドキャストをいくつか聞いただけです。

詳細については、こちらをご覧ください。また、前述のポッドキャストはここにあります。

ポッドキャストでは、シャーディングに関する一般的な問題のいくつか、Hibernateプラグインが対処したハードルのいくつかについて説明し、その後、予想される今後の方向性について説明します。それが少し役立つことを願っています!

于 2009-09-22T16:56:06.393 に答える
1

あなたが見ることができる休止状態の破片プロジェクトがあります。

于 2009-09-22T18:18:41.903 に答える