問題タブ [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.

0 投票する
1 に答える
772 参照

php - キー値ストレージ内のオブジェクトの分割と結合を処理しますか?

memcached オブジェクトが大きくなりすぎないように物理的/実際のサイズを測定する方法についていくつかの助けを得た後、私は次のステップについて考えました - ストレージ時に大きなオブジェクトを小さな断片に透過的に分割し、それらを接着するシャーディング/分割機能を実装しますそれらを要求するとき、1 つの大きなオブジェクトとして一緒に。基本的に、memcached を満足に保つために実行する必要があるすべてのことを、舞台裏で自動的に実行する必要があります。

配列、オブジェクト、またはあらゆる種類のオブジェクトの分割を処理する適切な方法は何ですか?

私は自分の webapp で PHP を使用していますが、この場合、正しい方向に向けるためのいくつかの疑似コードを使用した一般的なアプローチに非常に満足しています。

どうもありがとう!

0 投票する
2 に答える
276 参照

grails - Grails はシャーディングをサポートしていますか?

Grails はシャーディングをサポートしていますか?

マルチテナンシー データベース ソリューションが必要で、現在 grails を検討しています。

0 投票する
3 に答える
2175 参照

google-app-engine - Google App Engine シャード カウンターのシャード数は?

今日、Google App Engine のシャード カウンターについて読みました。この記事では、データ ストア内のエンティティごとに 1 秒あたり約 5 回の更新が最大になると予想する必要があると述べています。しかし、このソリューションは、1 秒あたりに実行している更新の数を知る方法がない限り、「スケーリング」しないように思えます。たとえば、10 個のシャードを割り当てることができますが、1 秒あたり 50 回の更新で窒息し始めます。

では、更新の速さをどのように把握し、その数をシャードの数に戻すにはどうすればよいでしょうか?

私の推測では、カウンターと一緒に最近のアクティビティの記録を保持することができ、スパイクを検出した場合はシャードの数を増やすことができます. それは一般的にどのように行われますか?もしそうなら、サンプルコードでそれが行われていないのはなぜですか? コードで自動的に行うのではなく、ウェブサイトのアクティビティを監視し、トラフィックの増加に応じてシャード数を更新する方が一般的な方法ですか?

更新:破片が少なすぎたり窒息したりすると、実際にはどのような影響がありますか? Web サイトが応答しなくなったということですか、それともタイムアウトのためにカウンターの更新が失われる可能性がありますか?


余談ですが、この質問はシャーディングなしでカウンターを実装することについて述べていますが、回答の 1 つは、トラフィックが多い場合は memcache もシャーディングする必要があることを示唆しています。したがって、シャードの割り当てとチューニングの問題は重要なようです。

0 投票する
1 に答える
2638 参照

replication - neo4jデータをシャーディングして複製する方法はありますか?

私が取り組んでいるいくつかの新しいプロジェクトでは、neo4jのオプションを検討しています。与えられたデータのニーズ(本質的にグラフベース)に対して、neo4jはうまく適合し、迅速なプロトタイプは私に良い応答時間を与えています。私が理解したいのは、neo4jデプロイメントをスケーリングする方法です。具体的には:

  • neo4jデプロイメント間でデータをシャーディングするにはどうすればよいですか?neo4jは1台のマシンにデプロイされているため、1台のマシンに保存できるデータの量には制限があり、その配布方法を知りたいと思います。明らかに、ユーザーで分割すると、(シャード全体で)切断されたユーザー間の関係を維持できなくなります。
  • neo4jデータを複製するにはどうすればよいですか?潜在的なリーダーとライターの両方をスケールアップできるだけでなく、リアルタイムでデータのバックアップを作成できるように、書き込みに使用されるマスターと読み取りに使用されるスレーブを使用してsql-like-setupを作成することを考えています。私は、すべてのneo4jデータがファイルシステムに保存されていることを理解しています。これは本質的に複製できません。ここでそれを行う方法はありますか?おそらく、mysqlのbinログに似たものですか?
0 投票する
3 に答える
3314 参照

php - シャーディング/配布する機能(コンシステントハッシュ)?

アップロードされたファイルを異なるサーバー間でシャーディングするために、やや軽量のコンシステントハッシュのようなPHP関数を作成することについて少し考えました。

明らかに、rand()はサーバー間でファイルをある程度均等に分散するように機能しますが、ファイルを要求するとき、どのファイルがどのサーバーにあるかは誰にもわかりません...

コンシステントハッシュを作成するための広範なライブラリがいくつかあることは知っていますが、これらがどのように機能し、独自の非常に軽量なライブラリを展開するためにどのようにできるのでしょうか。

注:サーバーが削除されることは考慮していませんが、代わりにさらに多くのサーバーがプールに追加されます。

アップデート:

擬似コードの簡単な行は次のとおりです。

0 投票する
3 に答える
12596 参照

nosql - NoSQLが従来のRDBMSはスケーラブルが苦手だと言う理由

MySQLなどのRDBMSはスケーラブルではないという記事を読んだことがありますが、MongoDBなどのNoSQLはうまくシャーディングできます。 RDBMSが提供するどの機能がそれ自体をうまくシャーディングできないのか知りたいです。

0 投票する
4 に答える
2168 参照

php - php: 自動データベース シャーディング ロジックを作成していますか?

次のアイデアを思いついたばかりですが、それが本番アプリケーションに適用できるかどうかを判断する知識がありません。

簡単にするために PHP/mySQL 上に構築された Web アプリケーションがあります。データベース内のテーブルは大きくなる傾向があります - 簡単に数百万のレコードになるため、ここではテーブルのシャーディングがオプションになる場合があります。

プロセスが機能することを想像した方法は次のとおりです。

キャッシュされたファイルには、データベースで使用可能なテーブルのリストが含まれています。各テーブルには最大 100 万行が含まれ、これに達すると、新しいテーブルが作成された後にキャッシュされたリストが再作成されます。

明らかに、テーブルへの書き込みごとに行数をチェックするのは良い考えではないため、100 万個のデータが作成される速さに応じて、1 週間または毎日などの設定された間隔でこれを行うことができます。

これは、大量のデータを処理し、インデックス サイズをかなり小さく保つのに適した方法でしょうか?

ありがとう

0 投票する
2 に答える
306 参照

google-app-engine - シャード カウンターを使用するときにカウンターで並べ替える方法

メイン エンティティが でStory、ユーザーが各ストーリーに投票できるアプリケーションがあります。各投票vote_countは、ストーリーの a を増やします。

ストーリーの書き込み競合が心配なので、各ストーリー のシャード カウンターを使用して投票を追跡する予定です。

ここで私の質問: 投票数順に並べられた記事のリストを取得するにはどうすればよいですか? 例: 最も投票数の多い 50 のストーリーを表示します。

私が最初に考えたのは、カウンター値を読み取り、実際のストーリーのプロパティを更新するタスクを定期的に実行することです。投票によるクエリの結果が少し古かったとしても問題ありません。

0 投票する
2 に答える
823 参照

mysql - データベース パーティションからシャーディングに進化してスケールアウトする方法は?

MySQL テーブルがあるとします。

すべてが良いです。テーブルは、単一のサーバー (Server1) 上にあります。しかし、最終的にはスケールアウトしたいと思うかもしれません。そこで、テーブルを分割して、12 個のパーティションのうち 6 個を新しいサーバー (Server2) に移動したいと考えています。

私が欲しい:

  • 奇数番号のツイートを含む Server1: パーティション 1、3、5、7、9、11
  • Server2 に偶数番号のツイートを含める: パーティション 2、4、6、8、10、0

1) これらのパーティションを Server1 から Server2 に移動する最善の方法は何ですか? 自動インクリメントの tweet_id の値が移行中に変更されないことを確認する必要があります。

2) 2 つのサーバーができたので、2 つのサーバーによって生成された自動インクリメントの tweet_id が同じ値でないことを確認するにはどうすればよいですか? また、各パーティションの tweet_id が一貫していることを確認する必要もあります。つまり、パーティション k では、すべての tweet_id の modulo 12 が k に等しくなります。

3) 理想的には、このスケールアウト プロセスを継続したいと考えています。そのため、後で 3 番目のサーバー (Server3) を追加したいと思います。各サーバーに 4 つのパーティションがあるように、パーティションのバランスを取り直したいと思います。繰り返しますが、3 つのサーバーによって生成された自動インクリメントの tweet_id が明確であり、12 を法とする tweet_id が各パーティション内で一貫していることを確認するにはどうすればよいですか?

0 投票する
1 に答える
934 参照

c# - C#、マルチコアSolr、Lucene、シャード、大文字と小文字を区別しない「含む」検索、および1つの巨大な片頭痛

私は自分の実装にかなりの時間を費やしています。

solrサーバーが実行されています。コアは3つありますが、簡単にするために「メンバー」、「ビジネス」、「製品」と呼びましょう。

solrnetを使おうとしましたが、シャーディングをサポートしていません。だから、私は自分でURLを作成しなければならないのではないかと恐れています。

そこで、問題に気付いたときに、管理ツールを使用してクエリ用のサンプルURLをいくつか作成しました。Solrは、「含む」ではなく「等しい」を実行し、大文字と小文字を区別します。私はおそらくこれについてすべて間違っていることを知っています。

だから、私はqtパラメータを「dismax」に設定する必要があることを読みました。管理ツールを介してメンバーのコアのみを検索した場合にのみ、「未定義のフィールド価格」が表示されます....私のメンバーには価格フィールド。私の製品はそうです。

クエリで次のことを行う必要があります。

  1. 複数のコアを検索する(シャーディング)
  2. 大文字と小文字の区別
  3. 等しい単語の代わりに単語が含まれています
  4. 複数のフィールドを検索
  5. フィールドの優先度を宣言します(最初に名前で検索し、次に説明などで検索します)

クエリがすべて間違っている可能性がありますが、次のようになります(サーバー名は無実を保護するために変更されました)名前フィールドは実際にはユーザーの姓名を連結したものです....したがって、dismaxで大文字と小文字が区別されるかどうかを確認しようとしました名前にはjim(大文字と小文字を区別しない)という単語が含まれています。

mysolrserver.mydomain.int:8080 / solrQA / select?indent = on&version = 2.2&q = Name:jim&fq =&start = 0&rows = 10&fl = *%2Cscore&qt = dismax&wt = standard&explainOther =&hl.fl =&shards = mysolrserver.mydomain.int:8080 /Members,mysolrserver.mydomain.int:8080/Businesses

どんな助けでも大歓迎です。