現在、mssqlサーバーベースのソリューションを使用して、リソースのエッジで実行しています。
負荷に取り組むための次の動きに関する多くの従来のオプションがあります。
- より高速なCPUとIOを購入する
- 一部の顧客を分割してサーバーを分離する
- クラスタにデータベースを移動
ライセンスとハードウェアまたは時間の点で、すべてが高価です。そこで、システム全体をnosqlエンジンのcassandraが約束するスケーラブルなソリューションに移動することで、別のオプションを追加したいと思います。
それでも、私は定かではなく、noSQLデータベースの経験もないので、「非構造化」データの構造を理解する必要があります。
このアプリケーションでは、基本的に、ユーザーがさまざまな方法で入力したデータを「Key-Value」リストとして保存します。(Orderのような)ヘッド要素を含む親テーブルがあり、(Order_Linesのような)注文の内容を構成するキーと値のペアを持つ子テーブルがあります。
ビジネス的には、OrderとOrderLinesは1つの単位です。ただし、RDBMSにより、これらはテーブルに格納され、常に結合する必要があります。
操作中に、上部のみをロードすることを選択する場合がありますが、ほとんどの場合、先頭行といくつかのKVPをロードして、いくつかの有用な情報を表示します。
たとえば、概要リストでは、ヘッド識別子といくつかの値を各行の列に表示します。
更新:あらゆる種類のフォームを保存します。したがって、基本的には「ドキュメント」を保存します。それにもかかわらず、これらのフォームを準備し、値、並べ替えなどで検索する必要があります。データアクセス制御により、データベースにもう1つの複雑なレイヤーが追加されます。
ご想像のとおり、特定のKVPの量と可用性はオブジェクトごとに異なります。さまざまなデータの組み合わせに対して数千のテーブルを作成する必要があるため、オブジェクトの種類ごとに単一のテーブルを作成する有効な可能性はありません。
この種の「辞書」のようなデータセットは、noSQLデータベースに格納する方が良いでしょうか?これによるパフォーマンス上のメリットはありますか?cassandraはこれらのhead + KVPを1つのデータセットとしてモデル化しますか?cassandraのWebページといくつかのチュートリアルを見ると、RDBMSとcassandraの間にデータ編成の点でそれほど大きな違いはないように思えます。5つのKVPを選択したい場合は、結合の数は同じです。各行のリスト。
啓蒙は歓迎されています、そして問題を説明する論文へのポインターも大丈夫です。