2009-04-26 35 views
1

多くのユニークなデータベースを時間の経過と共に(数千、実際に)追加するためのMySQL環境を設定する必要があります。 私はある時点でMySQLサーバーの追加を開始する必要があり、第2、第3、第100サーバーへの移行を容易にするために、私の環境を事前に準備したいと思います。スケーラビリティオプションを使用して複数のMySQLデータベースを設定する

ちょうど興味深いことに、ソリューションをモデル化してデータベースにクエリを実行するアプリケーションがすべてのクエリを単一のアドレスに送信し、結果を受け取るようにすると非常に便利です。サーバーの数と場所は認識していないはずです。データベース名は一意であり、どのサーバーがデータベースを保持しているか把握するために使用できます。

私はいくつかの調査を行いました。そして、MySQL Proxyが主要な候補として飛び出しましたが、私は上記のように実行するための具体的な何かを見つけることができませんでした。

誰でも?

答えて

5

私はこれを行ったいくつかの企業を知っている(Facebookは最大のものとして飛び出す)。誰も幸せではありませんが、選択肢の種類も吸います。

これらのデータベースやサーバーの一部で障害が発生した場合、何が起こるかを検討してください。クロスデータベースクエリを実行する必要があるときにはどうなりますか(今はそうでもないと思いますが)。

ここでFriendFeedのソリューションがあります:http://bret.appspot.com/entry/how-friendfeed-uses-mysql

彼らは基本的に見せかけキーと値のストアとしてMySQLを使用しているので、それはビット「バックasswards」です。私は彼らがなぜ仲介者を切り取ってそのオブジェクトを格納するためにBerkeleyDBのようなものを使うのではないのか分かりません。接続管理、多分? MySQLのオーバーヘッドのように思えるのは、非常に簡単に追加できるもの(有名な最後の言葉)を支払うには高すぎる価格です。

あなたが本当に探しているのは、分散共有非存在データベースです。いくつかはMySQLやPostgreSQLのようなオープンソース技術の上に構築されていますが、無料で入手できるものはありません。購入気分の場合は、GreenplumAsterDataNetezzaVerticaをチェックしてください。

そこには、さまざまな分散型のキーバリューストレージソリューションもあります。より良いリファレンスがないため、ここでは始点:http://www.metabrew.com/article/anti-rdbms-a-list-of-distributed-key-value-stores/です。

+0

私はクロスデータベースクエリを行う必要はないと言うことができます。各データベースは独自のアイランドですが、それだけです。アプリケーションは単一のポイントからすべてのデータベースを照会できる必要があります。b。私は自由に新しいデータベースを追加する能力が必要です。 画像が変わりますか? – Omer

+0

ああ、非常に迅速かつ詳細な応答に感謝します。 – Omer

+2

単純な解決策は、現在のデータベース接続モジュール用のラッパーを作成し、コネクターのプールを維持することです.dbハンドルを求めるときに、正しいdbを見つける方法を教えてください。これは、設定された数のdbsと静的マッピングに対して機能します。動的マッピングには明らかな問題があります。 そして、クロスdbクエリが必要かどうか本当に尋ねていませんでした。私はあなたのプロジェクトが成長すれば、クロスDBクエリが必要になることを伝えていました。たぶんそれらの多くはありませんが、あなたはそれらを必要とします。 – SquareCog

2

あなたの問題は、私たちが直面していた問題と同じように聞こえます。つまり、あなたは白いラベルとして行動しており、各クライアントは独自のデータベースを持つ必要があります。この概念があなたのものと同じだと仮定すると、クライアントのホスト名とデータベース名(アプリケーション層にキャッシュされる可能性がある)を格納した「マスター」データベースを活用していました。クライアントがアクセスしていたサーバーは、そのデータソースを必要なデータベースに動的にシフトできます。これにより、数千のクライアントデータベースにスケールアップすることができました。

関連する問題