正規化されたSQLサーバーデータベースに「顧客」データがあります。
アプリで顧客データを取得するのに時間がかかりすぎています。これは、必要なすべてのデータを取得するために10以上のテーブルに移動する必要があるためです。
私の会社にはSOLRがインストールされており、単一の「顧客」に必要なすべてのデータを含むJsonオブジェクトを格納することを考えました。
これにより、速度が大幅に向上すると思います。
しかし、Jsonを含むvarchar(max)列を持つ単一のテーブルにこのデータを配置すると、どのような違いがあるのか疑問に思いました。 jsonと同じテーブルにある10個の検索可能な列にインデックスを付けることができます。
ドキュメントデータベースは非常に人気があることを私は知っています。 つまり、SQLサーバーで非正規化されたデータを使用して自分自身をローリングするよりもメリットがあるはずです。誰かに教えてもらえますか?
多くのNoSQL製品にはシャーディングが組み込まれています。 DBMS自体は、特定のサーバーに特定のキー範囲を格納し、高可用性のために冗長コピーを保持するように管理します。クライアント接続は、アプリケーションではなく、DBMS内でルーティングされます。マルチサーバーのスケールアウトは、CAPの妥協を犠牲にして、簡単になります。
別の方法として、Solrを既に設定している場合は、ドキュメントにインデックスを付けて、複数の形式(JSON、XML、さらにはPython辞書)で返すことができます。
Solrは、情報を非常に高速に検索する方法を提供するだけでなく、ファセットクエリも実行できるようにします。
RDBMSで独自の非正規化構造を作成することは機能しますが、RDBMSのポイントはリレーショナルの側面です。あなたはそれを使う目的を打ち負かすでしょう。 Solrは、非正規化されたドキュメントを処理するために作成されたため、当面は(おそらくあなたのスキルセットがわからないため)最も簡単なソリューションです。
SQL Serverを使用してJSONを格納することの明らかな利点は、すべての情報が、作業しているのと同じ場所および同じ環境(ほとんどの場合)に保存されることです。
注:最終的に重要なのはあなたの最善の判断です。 Solrは現時点ではあなたのニーズにうまく機能しますが、長期的にはうまく機能しますか?