問題タブ [sharding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - datafabric gem を使用しているときに、一部のモデルで標準のアクティブ レコードを使用するにはどうすればよいですか?
2 台のマシン間でシャーディングする data-fabric gem を使用しています。
ただし、一部のテーブルには標準のアクティブレコード関数を使用したいと考えています。
これを達成した同様の経験をした人はいますか?
mysql - InnoDBでのMySQLシャーディングと主キーのパフォーマンス
私は歌詞のWebサイトを運営しており、基本的に曲のインデックスを保持する単一のテーブルがあります。基本的に、自動インクリメント(song_id)、アーティスト、および曲のタイトルを持つ主キー。
歌詞自体は10個のシャードに保存され、各シャードはsong_idMOD10に基づいています。song_idとsong_lyricsの2つの列があります。song_idフィールドは主キーですが、自動インクリメントではなく、インデックステーブルと同じ整数を格納します。
私の質問は、InnoDBと主キーについて読んだことから、たとえばシャード0、song_id行が10、20、30などになり、連続していないパフォーマンスヒットはありますか?私の恐れは、主キーの数字をスキップするとパフォーマンスに影響を与えることです。
memcachedを使用しても、現時点では大きな負担はありませんが、歌詞に加えていくつかの新機能を追加する予定なので、スキーマを変更する場合は、今がどの時期よりも良い時期です。洞察に感謝します。ありがとうございました!
mysql - データベースのシャーディング戦略
製品テーブルを多数の小さなテーブルに分割し、そのテーブルを別のサーバーに配置したいと考えています。しかし、私にはいくつかの問題があります。製品IDでデータベースをシャーディングする場合。誰かが 1 つの製品カテゴリをリストするときに、すべての製品をいくつかのカテゴリに属するようにするにはどうすればよいですか。誰もが良い理想を得ますか?
mongodb - マスターがダウンした場合にスレーブに接続する方法 -- レプリケーション
私は MongoDb でデータ レプリケーションをいじっています。現在、マスター ノードといくつかのスレーブ ノードがあります。これらはすべて別のポートで実行されていますが、別のマシンで実行することもできます (私は atm をテストしています)。
私の質問は、コードからこれらに接続するにはどうすればよいですか? 現在、localhost の x ポートに接続されている db クラスのインスタンスが 1 つだけあります。明らかに、このノードに障害が発生した場合は、localhost の y ポートでスレーブを使用し、それが失敗した場合は localhost の z ポートを使用したいと考えています。接続ごとに個別の db オブジェクトを使用する必要がありますか?
mongodb - 2台のサーバーでのmongoDBレプリケーション+シャーディングは妥当ですか?
次の設定を検討してください。
通常のmongodbレプリケーションセットとしてセットアップされた2つの物理サーバーがあります(アービタープロセスを含むため、自動フェイルオーバーは正しく機能します)。
今、私が理解している限り、ほとんどの実際の作業はプライマリサーバーで実行されますが、スレーブはほとんどの場合、データセットの同期を維持するための作業を実行します。
同じ2台のサーバーに別のレプリケーションセットをセットアップする方法でこのセットアップにシャーディングを導入し、各サーバーで1つのmongodプロセスをプライマリとして実行し、1つのプロセスをセカンダリとして実行することは合理的でしょうか。
期待される結果は、両方が稼働している間、両方のサーバーが実際のクエリ/挿入のワークロードを共有することです。一方のサーバーに障害が発生した場合、もう一方のサーバーが復元されるまで、セットアップ全体がエレガントにフェイルオーバーして実行を継続する必要があります。
セットアップの全体的なオーバーヘッドとプロセスの数(mongos / configservers / artibers)を除いて、このセットアップに欠点はありますか?
mongodb - Mongoシャーディングは、シャード間で大規模なコレクションを分割できません
mongoでの単純なシャーディング設定のように見える問題が発生しています。
2つのシャード、1つのmongosインスタンス、および1つの構成サーバーを次のように設定しています。
マシンA-10.0.44.16-構成サーバー、mongos
マシンB-10.0.44.10-シャード1
マシンC-10.0.44.11-シャード2
コレクション内のすべてのドキュメントに存在し、4つの値のいずれかを含むフィールドであるシャードキー「SeedType」を持つ「Seeds」というコレクションがあります(以下のシャーディングステータスを確認してください)。値のうちの2つには、他の2つよりも大幅に多くのエントリがあります(2つにはそれぞれ784,000のレコードがあり、2つには約5,000のレコードがあります)。
私が期待している動作は、InventoryPOSを使用した「Seeds」コレクションのレコードが一方のシャードに配置され、InventoryOnHandを使用したレコードがもう一方のシャードに配置されることです。
ただし、2つの大きなシャードキーの両方のすべてのレコードがプライマリシャードに配置されるようです。
これが私のシャーディングステータステキストです(わかりやすくするために他のコレクションは削除されています):
私は何か間違ったことをしていますか?
半無関係な質問:
mongoサービス全体をブロックせずに、あるコレクションから別のコレクションにオブジェクトをアトミックに転送するための最良の方法は何ですか?
よろしくお願いします、-Tim
mongodb - 自動スケーリング、シャーディング、リバランスを行う RDBMS はありますか?
MongoDB のような no-sql の利点の 1 つは、水平方向に自動的にスケーリングできることだと思います。安価なマシンを追加するだけで、データが新しいマシンに「広がる」ことができます。
RDBMS の場合はどうですか? RDBMS もそれを自動的に行いますか?
mongodb - アクセスできない Mongo シャードを削除する
私は 3 つのシャード (shard0000、shard0001、および shard0002) を使用して MongoDB シャード セットアップを行っています。shard0002 を実行するマシンが現在ダウンしているため、すべてのクエリが失敗します。セットアップから shard0002 を一時的に削除し、最初の 2 つのシャードで作業を続けたいと考えています。最初の 2 つのシャードに存在するシャード化されていないコレクションのみを使用すると仮定すると、それは可能ですよね?
私が最初に試したことは次のとおりです。db.runCommand({removeshard: 'IP:PORT'})
シャードをドレインモードにするだけで、終了することはありません(ダウンしているため)。次に、構成サーバーに接続しようとし、db.shards.remove({_id: 'shard0002'})
構成DBで実行してからmongosを再起動して、構成をリロードします。何かをしようとすると、「shard0002 のシャードが見つかりません」というメッセージが表示されます。
今のところそのシャードを気にしないことをMongoに知らせて、後で利用可能になったら再度有効にする方法はありますか.
mysql - MySQLを自動的にシャーディングしますか?
現在、私は、顧客への高速な読み取りと書き込みのためにリアルタイムで利用可能である必要がある大量のデータを扱っています。私たちが使用しているバックエンドストレージシステムはOracleですが、大型で頑丈なマシンをよりスリムなシステムに置き換えたいと考えています。
さまざまな理由で、Cassandraを使用できず、MongoDBをテストしています(しかし、私は怖いです)(それは本当に若く、いくつかの重要な機能が欠けています)、それで私はたくさんのMySQLインスタンスをシャーディングすることを考えていました。
これを管理するための優れたシステムはありますか、それとも自分でロールする必要がありますか?いくつかのプロジェクトを見つけましたが、それらがその場でのシャードの追加/削除をサポートしているかどうかはわかりません。
mysql - wordpress sharding: どのマルチデータベースプラグインを使用しますか?
データベースを分割するのに十分な数のブログをホストしている wordpress マルチサイト インストールがあります。wordpress を複数のデータベースに分散させるために利用できるプラグインが 3 つあります。
- http://wordpress.org/extend/plugins/hyperdb/
- http://premium.wpmudev.org/project/multi-db
- http://wordpress.org/extend/plugins/shardb/
どちらを使用するかを決定しようとしていますが、それらを比較する情報はあまり見つかりません[1]。
これら 3 つのツールのいずれかをデプロイした経験のある人はいますか? または、複数のサービスを利用して、切り替えた理由をまとめてください。
ありがとう、ベサニー