4

現在、私は、顧客への高速な読み取りと書き込みのためにリアルタイムで利用可能である必要がある大量のデータを扱っています。私たちが使用しているバックエンドストレージシステムはOracleですが、大型で頑丈なマシンをよりスリムなシステムに置き換えたいと考えています。

さまざまな理由で、Cassandraを使用できず、MongoDBをテストしています(しかし、私は怖いです)(それは本当に若く、いくつかの重要な機能が欠けています)、それで私はたくさんのMySQLインスタンスをシャーディングすることを考えていました。

これを管理するための優れたシステムはありますか、それとも自分でロールする必要がありますか?いくつかのプロジェクトを見つけましたが、それらがその場でのシャードの追加/削除をサポートしているかどうかはわかりません。

4

3 に答える 3

6

MySQL を使用すると、データベース シャーディングを非常に効果的に実装できます。シャーディング スキームが単純な場合はアプリケーション レイヤーで実行できますが、より複雑な場合はツールを使用することをお勧めします。多くのオプションについては、こちらのサイトで説明されているほか、サポートされている高度なオプションについても説明されています。

オプションの詳細については、次を参照してください。

http://www.dbshards.com/articles/database-sharding-whitepapers/

また、前述のように、フェールオーバー、アクティブ/アクティブ レプリケーション、バックアップ、復元、再シャーディングなど、シャード環境のライフサイクル全体を考慮することも重要です。

参考までに、クラウド環境 (I/O が遅い) では数千人の同時ユーザーで非常に大量の読み取りと書き込みを行っており、データセンター環境ではさらに高速な顧客がいます。シャーディングは間違いなく信じられないほど効果的です。書き込みは線形にスケーリングし、読み取りは多くの場合、線形よりも優れています (データベースにより多くのデータがキャッシュされるため)。

于 2010-10-06T17:21:14.987 に答える
0

Sharding-JDBCは、シャード データベースおよびテーブル用の JDBC ドライバーです。使ってみてもいいかもしれません。

于 2016-07-13T02:45:32.847 に答える
0

良い質問!あなたのスキームがもう少し複雑になったら、ある種のデータベース管理を調べたいと思うかもしれないという@cisaacsonに同意することを言わなければなりません。自分でシャーディングを行うこともできますが、私が理解しているように、複雑なシナリオを扱っています。私は最近、可能性のあるプロジェクトについてこの問題を調査しました。シャーディングは少し難しい場合があることを考慮してください...そのような移行を計画するときは、パーティショニングについて考えた方がよいかもしれません。ウィキペディアの基本的な考え方必要に応じて)。私が知っているいくつかの課題: スクリプトをレプリケートする方法、オブジェクトをすべてのシャードに公開するにはどうすればよいですか? バージョン管理についてはどうですか?そして、これは、データにアクセスするために必要なメモリの量、スレーブマシンに実際に負担をかける可能性のある書き込みの量などの明らかな問題さえ考慮していません. 少し前にこれを書いたのを見て、私は興味がありますあなたが最終的にやろうと決めたことに:)

于 2012-04-25T14:06:13.303 に答える