web-dev-qa-db-ja.com

この特定の設計(調査)にはSQLまたはNoSQLを使用する必要がありますか?

小さなWebアプリケーションを作成して、デフォルトの質問と回答のリストを使用して満足度調査を作成します。このアプリケーションは、作業オーダーが完了したときに調査が送信される少数の人々(最大5,000人)を対象としています。

小さいサイズと比較的単純な要件を考えると、SQLまたはNoSQLソリューションのどちらかを利用できると思います(両方に簡単にアクセスできます)。

エンティティのタイプ

  • 調査テンプレート(おそらく3つ)
  • 質問(調査テンプレートごとに複数の質問)
  • 質問の種類(自由形式、特定の回答など)
  • 調査回答(特定の調査テンプレートの質問への回答)

クエリ/レポートのニーズ

  • 個々の調査の回答を表示する
  • 特定の側面ごとに、さまざまな調査にわたって集計された回答を表示する
    • 作業指示番号(作業指示ごとに複数の調査)
    • 作業指示書の日付範囲
    • 作業を行ったグループ

変化/成長のニーズ

  • 調査テンプレート、テンプレートの質問、および考えられる回答は、いつでも変更される可能性があります(お客様によって決定され、進化します)
    • 必要に応じて新しいテンプレートを作成することも考えられますが、必要に応じてそれを実行する必要がないと便利です。
  • ストレージの増加の心配はありません。これは現在(恐ろしく設計された)Access DBで行われているので、ここでは大きなことは何も話していません。

その他のニーズ

  • 応答が特定のしきい値を下回る場合(例:3または5未満)、構造はより多くの情報/メモを要求することに対応できる必要があります

スタックに関する考慮事項

  • これは、Microsoft ASP.NETスタック(MVC4、WebAPIなど)上に構築されています

個人の好み/考え

  • しばらくの間、NoSQLデータベースを操作したいと思っていました
  • 私はSQLデータベースに慣れていますが、このようなものではスキーマとサーバーのオーバーヘッドが多いようです
  • RavenDBとCouchDBはどちらも私にとって魅力的です
    • Raven moresoは、.NETおよびHTTP経由で動作するように非常にうまく構築されているため、ライセンスが機能するかどうかはわかりません。
    • MongoDBも検討しますが、BSONよりもまっすぐなJSONドキュメントの方が扱いやすいかもしれないと考えていました
  • noSQLソリューション(特にRavenDB)では、オブジェクトをデータストアに永続化しているため、オブジェクトがある程度スキーマになります。最初にSQLサーバーでその構造を構築する必要があります(Entity Frameworkを使用しない限り)。これはNoSQLに利点がありますか、それともEFなどを考慮した洗浄ですか?

あなたの考えに興味を持ち、誰かが客観的な決定を下すのに役立つ情報を提供してください。

3
SeanKilleen

通常、No-SQLソリューションは、大規模で100%ACIDコンプライアンスを必要としないために実装されました。 GFS、Hadoop、Mongo、Basho RIAKなどのソリューションを使用して、データをフラット化し、パフォーマンスを向上させるために非正規化することは、現在の場所に到達するために重要でした。

ASP.NETスタックを使用しており、MS SQL ServerがCLR、powershellを介してASP.NETで多くの機能を提供しているため、MS SQLサーバーを使用するほうが良いと思われる場合、あなたのケースはNo-SQLを鳴らしません(これも.Netオブジェクトを呼び出すことができます)IIS(IISでホストしていることを前提としています)で非常にうまくいきます。これもSQL Server 2012 Expressを使用できるように聞こえますしたがって、ライセンス費用を節約できます。

MS SQL Serverを使用すると、新しいアイデアを思いついた場合や、実装がより困難なNo-SQLソリューションで、関連しないテーブル間でデータを簡単に「結合」できます。

しかし実際には、要件と、それを何に使用するのかを調べます。どっちに行ってもいい。 No-SQLソリューションを使用して足を濡らした方が幸せな場合は、すばらしいです。頑張れ!最終結果はおそらく問題ではありませんが、質問に厳密に答えるには、あなたが説明した使用パターンを持つ.Netアプリの方が良いので、私は個人的にSQL 2012 Expressを使用します。

他の人の意見を知りたいです。

4
Ali Razeghi

はい、NoSQLデータベースは必要ありません。以前の回答で述べたように、スケールの問題はありません。さらに、より豊富なクエリセットが必要です。 NoSQLは、非常に豊富なクエリ機能を提供しません。データベーススキーマを正規化すると、テーブルを追加することで将来の要件に適切に対応できます。 NoSQLは、同じテーブル内に緩やかなスキーマを持つことに特化しています(または列ファミリーなど、それに相当するものはすべて)

NoSQLを楽しんで、または学びたい場合は、そうすることができます。あなたの好奇心をあなたの要求と強制的に結びつける必要はありません。

1
sunil