11

今後数か月のうちのある時点で、アプリは DB を分割する必要があるサイズになります。ホスティング、Node.js/PostgreSQL スタックに Heroku を使用しています。

概念的には、各論理シャードが 1 人のユーザーとそのユーザーに関連付けられたすべてのデータを表すことは、アプリにとって理にかなっています (アプリの各ユーザーは大量のデータを生成し、ユーザー間のやり取りはありません)。ユーザーがデータに対して複雑なアドホック クエリを実行できる機能を保持する必要があります。私はシャーディングについて話している次のような多くの記事を読みました: http://www.craigkerstiens.com/2012/11/30/sharding-your-database/

概念的には、シャーディングがどのように機能するかを理解しています。しかし実際には、どのコードを書く必要があり、アプリケーションのどの部分を変更する必要があるかという点で、これを Heroku に実装する方法がわかりません。チュートリアルまたはいくつかのポインターへのリンクをいただければ幸いです。

以下は、私がすでに見たいくつかのリソースです。

4

2 に答える 2

0

これを「シャーディング」と呼ぶかどうかはわかりません。

LedgerSMB での処理方法は次のとおりです。各企業 (事業体) は、完全に個別のデータを持つ個別のデータベースです。企業間でデータを共有することはできません。1 つの postgreSQL クラスターで、任意の数の企業データベースを実行できます。データベースを作成してスキーマをロードする管理インターフェースがあります。管理インターフェイスは、会社間で共有できる新しいユーザーを作成することもできます (オプション)。Heroku のデータベース間でユーザーを共有することがどれほどうまく機能するかはわかりませんが、PostgreSQL との連携方法に関してその詳細を含めています。

したがって、これは実行可能なアプローチです。

本当に必要なのは、データベースを起動し、自動化された方法でユーザーを管理するものです。そこから、必要に応じてデータベースにマップできる会社名をユーザーが指定するように要求できます (たとえば、このマッピングは別のデータベースに保存できます)。

かなりレベルが高いことは承知しています。ただし、開始する必要があります。

于 2013-04-26T14:22:09.677 に答える