2017-02-08 7 views
1

サービスの設定をサーバー側に保存して、デバイス間でデータを同期できるようにすることをユーザーに提案したいと考えています。NoSQLはユーザーデータを格納するのに適していますか?

それが適切であるかどうので、私はわからないよ前に私は、しかし、私は合理的な選択肢であるように思わ行ってきた研究から、NoSQLのを使用していません。

ID | Data 
------|------ 
1  | { "Example1":"foo", "Example2":"bar"} 
2  | { "Example1":"bar", "Example2":"foo"} 

:私はJSON形式の文字列で、ユーザーの設定を保存していた、と識別子としてのユーザーIDでのNoSQLデータベースを使用した場合

だから例えば、データベースは、次のようになりますそれは適切ですか?データに関する前提の1つは、ユーザーがそれに合うようにさまざまな設定の範囲を変更するため、特定のオプションが有効かどうかはユーザーに応じて大きく異なるため、特に規則的ではないということです。この不規則性は、NoSQLデータベースがパフォーマンスのためにここでより適切かもしれないという信念につながります。
複数の異なる値を持つ長いデータセットを返さなくても、クライアントデバイスはJSONのプリファレンスを使って返され、必要に応じて解析されます。あなたが見せているデータに基づいて

答えて

1

、いいえ、NoSQLのはあなたに何かを購入していません。 は傷つきません。でも関係はありますが、関係も同様に機能します。しかし

、あなたがオブジェクトとして保存され、むしろ、文字列に「データ」列を変換しなかった場合:

ID | Example1 | Example2 | Example3 
------|-----------|------------|--------- 
1  | foo  | bar  | 
2  | bar  | foo  | 
3  | blah  | baz  | qux 

は、あなたがのNoSQLを利用するために始めています。たぶんユーザー3が、追加のパラメーターを持つ別のシステムを使用している可能性があります。 NoSQLを使用すると、いつでも新しい列を追加することができます。追加の作業なしでデータベースに格納されます。

はもちろん、読み出し側は、データが各列に格納されているかを理解する必要があるかもしれません。 "Example3"が存在するかどうかを調べるためにデータをイントロスペクトしなければならないか、気にしないかもしれません。

一般的にはあなたが取得している大きなものを使用すると、データの任意のセットを保存することができるということです。実際には、お互いに全く異なる行があるかもしれません(ただし、データ間に類似点があると簡単になる傾向があります)。さらに、システムによっては、 "Example3 = qux"を検索する方が簡単です。これはプロバイダに依存しているため、高速読み込みを提供するためにインデックスを使用する必要があります。設定パラメータの

+0

一つは、潜在的なNoSQLへの私の意見をひっくり返した主なものでした複数の繰り返し値を、持っているでしょう。ユーザーが複数の設定Xの要素(Xの設定など)を複数持つことができる場合は、SQLデータベースに異なるインスタンスを作成するか、Xの単一のデータセットをJSON配列としてNoSQLデータベース。システムのアーキテクチャは、実際にはデータがサーバ側で解析される必要はありません。データは単に設定を設定しているためです。この結果、NoSQLがより適用可能であると私は信じていました。 – Andrew

関連する問題