データベースに格納されている特定のオブジェクトタイプがあります。このタイプには、インスタンス間の構造が異なる追加情報が追加されるようになりました。インスタンスのグループについては、情報が同じ構造になっていますが、構造は実行時にのみ認識され、時間とともに変化します。キーと値のペアのシリアル化形式は、RDBMSで最も適切に索引付けできますか?
テーブルにBLOBフィールドを追加してそこにキーと値のペアをシリアル化した形式で格納することにしました。あなたの経験から、どのフォーマットが最も適していますか?
私のアプリケーションの文脈では、このストレージスペースはセカンダリです。特定のキー/値ペアのセット(つまり、一種の可変フィールド複合キー)に対して正しいインスタンスを検索している、高速な操作が1つあります。私は、典型的なデータベースの索引作成に特に適したフォーマットがあることを意味しますか?
さらに、同じキーセット(必要に応じて特別な「クラス」)を共有する一連のインスタンスを探すことができます。
私はこれをJavaで書いています。私はさまざまなタイプのSQLデータベースに保存しています。私はJSON、GPB、ネイティブJavaのシリアル化を私のレーダーに用意しています。クロスランゲージフォーマットを好んでいます。テーブルに
- ストア値のセットとテーブル のキー
- ストアのキー/値のペアのセットが含まれている別のテーブルへの外部キーを追加します。私は2つの基本戦略を考えることができます
もしあなたがスキルレスアプローチをとることにしたら、Amazon.com SimpleDBはあなたが調べることができる何か他のものです - http://aws.amazon.com/simpledb/ –
私のデータの一部はすでにスキーマレスです。私はいくつかのオブジェクトを完全に直列化し、それらは一般的なテーブルにあり、FriendFeedのように(http://bret.appspot.com/entry/how-friendfeed-uses-mysqlを参照)。私はRDBMの機能が不要で、厳密なスキーマを使用すると難しくなりますが、私のデータの一部は標準のRDBMに完全に適しています。このハイブリッド戦略を使用しているので、私はCouchDBなどに切り替えたくない。 –
キー値テーブルに関するご意見ありがとうございます。私はすでにそのアプローチに反対して決めましたが、あなたのポストを読んだ後、私は再考し、私は自分の心を変えているようです。 –