web-dev-qa-db-ja.com

SQL ServerとSOLR(または任意のドキュメントデータベース)

正規化されたSQLサーバーデータベースに「顧客」データがあります。

アプリで顧客データを取得するのに時間がかかりすぎています。これは、必要なすべてのデータを取得するために10以上のテーブルに移動する必要があるためです。

私の会社にはSOLRがインストールされており、単一の「顧客」に必要なすべてのデータを含むJsonオブジェクトを格納することを考えました。

これにより、速度が大幅に向上すると思います。

しかし、Jsonを含むvarchar(max)列を持つ単一のテーブルにこのデータを配置すると、どのような違いがあるのか​​疑問に思いました。 jsonと同じテーブルにある10個の検索可能な列にインデックスを付けることができます。

ドキュメントデータベースは非常に人気があることを私は知っています。 つまり、SQLサーバーで非正規化されたデータを使用して自分自身をローリングするよりもメリットがあるはずです。誰かに教えてもらえますか?

1
Vaccano

多くのNoSQL製品にはシャーディングが組み込まれています。 DBMS自体は、特定のサーバーに特定のキー範囲を格納し、高可用性のために冗長コピーを保持するように管理します。クライアント接続は、アプリケーションではなく、DBMS内でルーティングされます。マルチサーバーのスケールアウトは、CAPの妥協を犠牲にして、簡単になります。

2
Michael Green

別の方法として、Solrを既に設定している場合は、ドキュメントにインデックスを付けて、複数の形式(JSON、XML、さらにはPython辞書)で返すことができます。

Solrは、情報を非常に高速に検索する方法を提供するだけでなく、ファセットクエリも実行できるようにします。

RDBMSで独自の非正規化構造を作成することは機能しますが、RDBMSのポイントはリレーショナルの側面です。あなたはそれを使う目的を打ち負かすでしょう。 Solrは、非正規化されたドキュメントを処理するために作成されたため、当面は(おそらくあなたのスキルセットがわからないため)最も簡単なソリューションです。

SQL Serverを使用してJSONを格納することの明らかな利点は、すべての情報が、作業しているのと同じ場所および同じ環境(ほとんどの場合)に保存されることです。

注:最終的に重要なのはあなたの最善の判断です。 Solrは現時点ではあなたのニーズにうまく機能しますが、長期的にはうまく機能しますか?

1
K.Boyette