問題タブ [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.
mongodb - MongoDBコレクションのクエリを非アクティブなチャンクのみに制限する
2つのフェーズを実行するアプリケーションを構築しています。
- 実行フェーズ-最初のフェーズは非常に
INSERT
集中的です(ハードウェアが1秒で実行できる限り多くの挿入)。これは基本的に、実行された作業のログ記録です。 - 検証フェーズ-次のフェーズでは、フェーズ1で生成されたログを照会し、外部ソースと比較して
UPDATE
、レコードに対して実行し、いくつかの統計を保存します。このプロセスは、フェーズ1の2番目の優先順位です。
私は、それらを並行して実行し、実行フェーズで書き込みロックを最小限に抑えることが可能かどうかを確認しようとしています。これを行う1つの方法は、検証フェーズを、実行フェーズによって現在挿入されているチャンクにない古いレコードからのクエリのみに制限することだと思いました。MongoDBに、find()
構成可能な時間内にアクセスされなかったチャンクからのクエリのみに制限するものはありますか?
amazon-ec2 - EC2 EBS ボリュームをシャーディングするとパフォーマンスが向上しますか?
メールディレクトリの非常に大きなコレクションに EBS を使用することを検討しています。多数の小さなファイルが多数のディレクトリに分散しています。EBS ストレージを複数の小さなコンテナーにシャーディングすると、1 つの大きな EBS ボリュームよりも読み取り/書き込みのパフォーマンスが向上しますか?
scalability - RavenDB - スケーラビリティの計画
最近 RavenDB を学習していて、それを使いたいと思っています。
スケーリングの準備ができている方法でシステムを構築すること、特にサーバー間でデータをシャーディングする方法でシステムを構築することについて、人々がどのようなアドバイスや提案をしているのか疑問に思っていましたが、それは単一のサーバーで開始し、必要に応じてのみ拡張できます.
単一のインスタンスに複数のデータベースを作成し、それらにシャーディングを実装することはお勧めですか、それとも可能ですか? それを拡張するには、これらのデータベースを複数のマシンに分散させるだけでよいのでしょうか?
私の第一印象は、このアプローチはうまくいくだろうということですが、他の人の意見や経験を聞くことに興味があります.
更新 1:
私はこのトピックについてもっと考えてきました。「後で整理する」アプローチの問題は、そのような状況でサーバー間でデータを均等に分散させることが難しいように思われることだと思います。範囲を指定できる文字列キーはありません(AE、FM ..)数字で行います。
これにより、私が見ることができる2つのオプションが残ります。境界で分割すると、1 ~ 50000 がシャード 1 に、50001 ~ 100000 がシャード 2 になりますが、このように古いサイトでは、元のシャードが行う作業が大幅に少なくなります。別の方法として、シャードをラウンド ロビンしてシャード ID をキーに入れる戦略は、ドキュメントを新しいシャードに移動する必要がある場合に問題になり、キーが変更され、キーを使用した URL が壊れます。
そこで、私の新しいアイデアは、コメントを求めて公開しているのですが、最初からバケット システムを作成することです。これは、シャード ID をキーに詰め込むのと同じように機能しますが、1000 などの大きな数から始めて、その間に均等に分散させます。次に、負荷をシャードに分割するときが来たら、バケット 501 から 1000 を新しいサーバーに移動し、1 から 500 をシャード 1 に、501 から 1000 をシャード 2 に移動するシャード ロジックを記述します。 3 番目のサーバーがオンラインになると、別の範囲のバケットを選択して調整します。
私の目には、これにより、最初に作成したバケットと同じ数のシャードに分割でき、量と年齢の両方の点で負荷が均等に分散されます。キーを変更する必要はありません。
考え?
mongodb - 複数のmongoクラスターと通信するようにmongoを構成できますか?
経験則では、各アプリケーションサーバーで「mongos」プロセスを実行します。これにより、アプリケーションはローカルホストと通信し続けます。これは高速であり、mongosプロセスはアプリに合わせて拡張できます。
2つの異なるmongoクラスター(シャーディング)があるとしましょう。2つの異なるクラスターと通信するように1つのmongosプロセスを構成することは可能ですか?データベースがさまざまな場所に存在していたという事実を抽象化するのは素晴らしいことです。
または、異なるポートで2つの異なるmongosプロセスを起動する必要がありますか?これが可能であるとしても、2つの異なるmongosプロセスがリソースを求めて戦うのは危険かもしれないと私はまだ心配しています。
それとも完全に違うものですか?アイデア?
google-app-engine - Google AppEngine シャーディングに関する質問
私のバックグラウンドはリレーショナル DB で、主に学習のために Google AppEngine の実験を行っています。ユーザーが州 (CA、NY、TX など) に属し、政党 (共和党、民主党など) を選び、特定の年 (今のところ 2012 年ですが、アプリは 2016 年に再利用される可能性があります)。
ユーザーが自分の投票履歴を確認して、現在の選挙で一度変更できるようにしたい. また、ユーザーが郵便番号を指定することを要求し、州および/または郵便番号ごとにいくつかのレポートを実行するとよいと思います。
リレーショナル DB を使用して、次のようなテーブルをいくつか作成するようです。
次に、SQL を使用してレポートを実行します。AppEngine データストアでは、集計レポートを実行するのがやや難しいようです。
私の最初の取り組みはUser
、各ユーザーがリストを含むことができるVotes
場所で分割し、別の場所に集計を二重に保存することです。
助言がありますか?
PS AppEngine-MapReduceプロジェクトを見たことがありますが、それがやり過ぎかどうかはわかりません。
sharding - Apache Zookeeper はシャーディングでどのように使用されますか?
cfg 情報を一元化することを考えており、zookeeper が適切な選択のようです。また、シャーディングにも関心があり、スキームがあります。poweredBy[1] では、Rackspace と Yahoo がシャーディングに Zookeeper を使用していることを確認しました。ポインタと詳細をいただければ幸いです。
[1] https://cwiki.apache.org/confluence/display/ZOOKEEPER/PoweredBy
sql-server - シャーディングを繰り返さずにDBの書き込みをスケーリングするにはどうすればよいですか?
シャーディングを繰り返さずに(特にSQL Server 2008を使用して)書き込みをどのようにスケーリングしますか?
mysql - MySQL でシャードされたデータをクエリする
MySQL データベースで大量のデータを扱っており、シャーディングを使用してスケールアウトしたいと考えています。シャーディングの原則を理解しており、データをどのようにシャーディングしたいかについても理解しています。
データベースのシャーディングについて調べると、シャードされたデータベースを実際に管理およびクエリする方法に関する包括的な例が見つかりません。
具体的には、データを複数のテーブル/データベース (シャード) に分割したとしましょう。そのデータをクエリする最良の方法は何ですか? 使用するシャードを mysql にインテリジェントに認識させる方法はないと思います。
シャードとクエリを管理できるサードパーティ ソフトウェアはありますか? それとも、シャードされたデータとやり取りするために自分のコード (php で書かれている) を変更する必要がありますか?
hibernate - JPA によるハッシュ分割/シャーディング用のライブラリ
私の部署は、大規模な Oracle データベースの一部をハッシュ パーティショニング/シャーディングに移行することを決定しました。エンティティを異なるスキーマに分割します。私は、これに対するさまざまな JPA 実装の適合性を評価するためにスパイクを実行する任務を負っています。
私が注目するように言ったのは、EclipseLinkと Apache OpenJPA/Sliceの 2 つです。過去に Hibernate のみを使用していましたが、Hibernate Shardsはベータ版であり、積極的に開発されていないようです (最後のリリースは 2007 年でした)。そのため、検討していません。
私は自分自身で評価と試験的な実装を行う予定ですが、与えられた時間内にこれらの実装の全体的な品質について良い感触を得られるとは思えません。実稼働環境で OpenJPA や EclipseLink を使用している場合、特にデータベースが共有されている場合は、経験 (肯定的および否定的)、全体的な品質に関する意見、および同じようにするかどうかについてお聞きしたいと思います。機会があればまた選びます。
php - How can one configure MongoDB sharding using PHP?
I'm working on setting up a MongoDB replica set on EC2. I'd like to configure auto-sharding such that my nodes can easily come up and down.
Is it possible to use the native PHP driver to trigger sharding and add/remove nodes? If so, how?