私のアプリケーション用のバックエンドWebサービスを選択したいと思います。これらのサービス(Parse、Proxomo、Cocoafish、StackMobなど)のドキュメントを読むと、スキーマレス形式でデータを格納することを提案している一方で、スキーマを事前に指定する必要があることが示されています。私はデータのスキーマが何であるかを理解しており、スキルレスは使いやすく、それぞれのメリットとデメリットを知りたいと思っています。どんな説明も大歓迎です。スキーマレスデータをスキーマを使用してデータを格納することの利点
答えて
最も大きな違いはスケーラビリティです。
スキーマを持つデータストレージソリューションは、スキーマフリーのデータストレージソリューションよりも配布がずっと難しくなっています。フォールト・トレランスのためのキー・バリュー・ペアの複製(スキーマ・フリー)が本当に簡単です。高速な読み取り時間と最終的な一貫性を備えた高速書き込みを容易にするために、ノード間でコピーを配布することは本当に簡単です。独自のデータベースを管理している場合は、複数のサーバーに拡張する必要がある場合にスキーマフリーソリューションを管理する方がはるかに簡単です。サービスを使用している場合、これはスキーマフリーのソリューションが通常安価で高速であることを意味します。
スキーマを使用しない場合の問題は、さまざまなデータセットやテーブルでトランザクションと一貫性が必要な場合に発生します。これはすべてコードで行う必要があります。
したがって、結論は次のとおりです。高速アクセスで大量のボリュームデータが必要な場合は、スキーマを使用しないでください。一方、データサイズと負荷がスキーマベースのシステムよりも控えめであれば、より良い結果が得られます。
どのサービスを使用するかを選択する際に役立つ必要がある場合は、アプリケーションでread/sec write/secと予想されるデータサイズ分析を行い、次に安価なソリューションを選択することをお勧めします。これらのサービスはすべてあなたの負荷に比例すると思われますが、コストが決定要因になります。
私はこの上の本当の専門家ではないが、私が読んだものから、ここで何私の認識です:時間の
ほとんどは、スキーマレスデータベースを簡単にキー/値、JSONオブジェクトを格納することができます。したがって、アプリケーション内で操作するオブジェクトをDBストレージに橋渡しするのは非常に簡単です。 オブジェクトがDBで受け入れられる形式に直接なっているため、オブジェクトがORM(Object Relational Mapper)を使用する必要はありません(ほとんどの場合、アプリケーション内にあるオブジェクトからJSONを生成するのは簡単です)
スキーマがない場合は、データベースに保存するオブジェクトのプロパティを簡単に調整(追加/削除)することができます。スキーマの更新やデータの移行は必要ありません。古いスキーマを新しいスキーマに変換します。
CONsのスキルのために、私の感想は、あなたが標準のSQLでデータを取得するために行うことができる制限を表現できないことです(あなたはどんな結合もしません)ので、 dbデータからデータを取り出し、スキーマレスエンジンによって提供されるものを確認したいとします。
- 1. 複数のスキーマを使用する利点は?
- 2. Rails:セッションをデータベースに格納する利点は?
- 3. web.config(カスタムセクション/ appSettingsエレメント)のデータを格納することとそれをクラスに格納すること
- 4. AngularJSでvmを使用してデータを配列に格納
- 5. データを格納するフレームワーク
- 6. log4Net adonetappenderを使用して晴れのテーブルストロークにデータを格納する方法
- 7. 別のテーブルに格納されたユーザ認証の詳細を有することの利点
- 8. 同じキーを使用してarraylistデータをマルチマップに格納する
- 9. Flexを使用してローカルにデータを格納する方法は?
- 10. javascriptを使用してxmlファイルにデータを格納する方法は?
- 11. SOSCipherを使用してiOSにデータを格納するときにCoreDataを使用してオフラインデータを管理することができます
- 12. F#を使用したMySqlデータベースへのデータ構造の格納
- 13. クラスを使用して静的データをJavaに格納しますか?
- 14. 隠しフレームを使用してページ間でデータを格納または渡す
- 15. データを関数として格納する
- 16. 連続したメモリ位置(pre C++ 11)にデータを格納しないstd :: stringの利点
- 17. localStorageを使用してリストの順序を格納する
- 18. pl/sqlを使用してテーブルの行を格納する
- 19. html5のローカルストレージを使用して変数値を格納する
- 20. ファイルを使用してオプティマイズの引数を格納する
- 21. 圧縮ファイルをデータベースに格納する利点はありますか
- 22. CQRS/ESシステムにコマンドを格納する利点は何ですか?
- 23. htmlとjavascriptを使用したクライアント側のデータの格納と取得
- 24. Python 3を使用する利点/利点は何ですか?
- 25. Struts2とEJBを使用してイメージをデータベースに格納
- 26. 三角形以外の点を格納しています
- 27. QListWidgetItem :: setDataを使用してポインタを格納する
- 28. コアデータを使用してunsigned long longを格納する
- 29. CoreDataを使用してカスタムクラスを格納する方法
- 30. 変数を格納して出力属性を使用する
あなたの考えと説明に感謝しているYonel。私はWebサービスだけでなく一般的なプログラミングでもあるので、私は間違っているかもしれませんが、(3番目のポイントに戻って)スキームレスデータ格納サービスは、実際にはデータを取得するためのフィルタリングです。もう少しお待ちして、あなたの答えを正しいものとしてマークし、賞金を与えます。 – chatur