問題タブ [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.
collections - Mongodbは自動的に上限付きコレクションに書き込みます
私は時間に多くのレコードの取得を管理する必要があります。1000000
レコードについて。そして、すべての主キーの最後の挿入値を毎秒取得する必要があります。シャーディングでうまく機能します。os cappedコレクションを使用して、すべての主キーの最後のレコードのみを取得することを検討していました。これを行うために、2つの別々の挿入を作成しましmongodb
た。ある種のトリガーを作成して、挿入をコレクションに伝播し、別のコレクションに伝播する方法がありますか?
mysql - クラスタリング、シャーディング、または単純なパーティション / レプリケーション
私たちは Facebook アプリケーションを作成し、多くのバイラル性を獲得しました。問題は、データベースが完全にいっぱいになり始めたことです (一部のテーブルには現在 2,500 万行以上あります)。何千もの書き込みのキューがあったため、アプリが機能しなくなったところまで来ました。
このアプリを迅速にスケーリングするためのソリューションを実装する必要がありますが、それぞれの長所と短所がわからないため、シャーディングまたはクラスタリングを追求する必要があるかどうかわかりません。また、パーティション/レプリケーションを行うことを考えていました。アプローチですが、書き込みに負荷がかかっている場合、それは役に立たないと思いますか?
mongodb - シャーディングを確認する方法は?
MongoDB をシャードしようとしています。シャーディング構成は完了しましたが、シャーディングが機能しているかどうかを確認する方法がわかりません。
データがシャーディングされているかどうかを確認するにはどうすればよいですか? シャードを検証/検証するためのクエリはありますか?
mysql - mysqlでシャーディングする複数のテーブル
テーブル内の2億件のレコードを処理するGPSアプリを作成しています。私の最初の考えは、テーブルをposition_1、position_2、...のような複数のテーブルに分割し、データを分割することです。
私の質問は、MySQL(innodb)でパフォーマンスが向上するかどうかです。
mongodb - nosql mongodbレプリカセットの自動シャーディング、実験の実行中のデータ損失
自動シャーディングされたmongodbにデータを継続的に挿入していました。(更新せず、挿入のみ)
実験的なセットアップ2つのシャード、各シャードには2つのノードがあります。
shard1-> node1(primary)、node2-shard2-> node3(primary)、node4
1つのシャードでセカンダリノード(node2)をダウンさせました->それでもデータは正しく挿入されましたプライマリ(node1)もダウンさせました->完全なシャードがダウンしました
驚いたことに、mongoのセットアップ全体が書き込みを行っていませんでした。
物語には別のひねりがあります。これでnode2を起動しました。これは使用可能な唯一のノードであるため、プライマリになり、データの受け入れを開始しました。
約10分後、node1も起動しました。
しかし、node1に挿入したデータをチェックしたとき(node2がダウンしているとき)は失われました:(。
最後のステップで、n1を起動すると、n2から新しいレコードが取得されましたが、上記のステップ2で取得したn1は完全に失われました:(。
これはmongoの予想される動作ですか?
誰かが私を助けてください、私は必要に応じてより多くの実験を実行することができます:)。
よろしくお願いします、Vivekananda Tadala
database - アーキテクチャの問題 - wcf と分散データ
基本的なアーキテクチャの質問になる可能性のあるものについてのお詫び
wcf サービスを使用してビジネス ロジック レイヤーを実装します。これらは mysqldb (データベース層) に接続し、何らかの処理を行います。wcf サービスは、複数のアプリケーションで使用できます。
基本的な質問 - 水平シャーディングまたは何らかの形式のパーティショニングを計画している場合、シャード マネージャーはどこに配置すればよいですか? たとえば、単一のデータベースの代わりに、2 台のマシンに 2 つのデータベースを配置します。
特定のアイテムを取得するための呼び出しは、たとえばアイテム レコードの主キーに応じて、db1 または db2 に移動する場合があります。
このシナリオでは、WCF コードの複数のコピーをそれぞれ異なる接続文字列で展開し、その前に、どのサービス URL を呼び出すかを解決するレイヤーを配置する必要がありますか? この種の問題にはパターンがあると確信しており、正しい方向への指針を得ることができれば素晴らしいと思います.
guid - SQL Azure シャーディングとソーシャル ネットワーキング アプリ
SQL azure でのシャーディングの概念は、現時点で 50Gb の DB サイズ制限を超えるための最も推奨されるオプションの 1 つです。シャーディングの重要な戦略は、アトミック ユニットと呼ばれる関連するレコードを 1 つのシャードにグループ化することです。これにより、アプリケーションは 1 つの SQL azure インスタンスに対してクエリを実行するだけでデータを取得できます。
ただし、ソーシャル ネットワーキング アプリなどのアプリケーションでは、エンティティとレコードが相互に接続されているため、アトミック ユニットを 1 つのシャードにグループ化することは簡単ではありません。そのようなシナリオに基づく推奨されるアプローチは何でしょうか?
また、シャード DB では、テーブルにどの主キーを使用する必要がありますか? Big Int または GUID。現在、BIGINT ID 列を使用していますが、何らかの理由でデータをマージする場合、異なるシャードの値が競合するために問題が発生します。GUID (UniqueIdentifier) を推奨する人がいると聞いたことがありますが、これがパフォーマンスにどのように影響するか心配です。UniqueIdentifier 列を使用してオンプレミスの SQL サーバーにインデックスを作成することはできません。UniqueIdentifier 列を使用する場合、Azure SQL が同様の戦略をどのように実装するのか疑問に思います。
mongodb - MongoDB での GridFS のシャーディング
GridFS と、それを異なるマシン間で分割する可能性について文書化しています。
こちらのドキュメントを読むと、推奨されるシャード キーは chunks.files_id です。このキーはファイル コレクションの _id にリンクされるため、この _id はインクリメンタルです。グリッドに保存するすべての新しいファイルには、新しいインクリメンタル _id があります。
O'Reilly の「Scaling MongoDB」本では、HotSpots を回避するために、増分シャード キーの使用は推奨されていません (最後のシャードがすべての書き込みと読み取りを受け取ります)。
GridFS コレクションをシャーディングするための提案は何ですか?
ホットスポットの問題を経験した人はいますか?
ありがとうございました。
mysql - MySQL InnoDB ビッグ テーブル: シャードするか、RAM を追加するか?
皆さん、私はソーシャル ゲームの開発者であり、ゲームには既に 70 万人のプレイヤーがおり、毎日約 7,000 人の新しいプレイヤーが登録され、約 5,000 人のプレイヤーが常にオンラインになっています。
DB サーバーは非常に強力なハードウェアで実行されています。16 コアの CPU、24 Gb の RAM、4 つの SAS ディスク上に構築された BBU を備えた RAID-10 です。私は Percona サーバー (パッチを適用した MySQL-5.1) を使用しており、現在 InnoDB バッファー プールは 18Gb です (ただし、innotop によると、利用可能な空きバッファーはわずかしかありません)。DB サーバーのパフォーマンスはかなり良好です (2k QPS、iostat %util は 10 ~ 15%、vmstat の「b」状態のプロセスはほぼ常に 0、loadavg は 5 ~ 6)。ただし、時々(数分ごとに)約10〜100の遅いクエリが発生します(それぞれが約5〜6秒続く場合があります)。
MySQL データベースには、最も多くのスペースを占める 1 つの大きな InnoDB テーブルがあります。約 3 億行あり、サイズは約 20 Gb です。もちろん、このテーブルは徐々に大きくなっています...データベースの全体的なパフォーマンスに悪影響を及ぼしているのではないかと心配し始めています。近い将来、私はそれについて何かをしなければならないでしょうが、正確にはわかりません。
基本的に問題は、シャードするか、単に RAM を追加するかということです。もちろん、後者の方が簡単です。最大 256 GB の RAM を追加できるようです。しかし問題は、よりスケーラブルなため、代わりにシャーディングの実装により多くの時間を投資する必要があるかどうかです。