2010年3月10日水曜日

スキーマレス

RDBにスキーマレスなデータを格納する方法を検討中

スキーマレスといえばXMLDBという気もするが、インストール不要のお手軽ファイルDBがよいので、やっぱりRDBになってしまう。格納方法として思いついたのが以下の2通り。

  • シリアライズ

オブジェクトをシリアライズしてそのままBlob型のカラムに格納する方法

ID Data
1 <?xml version="1.0"?>
<名前 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<姓>山田</姓> <名>太郎</名>
</名前>
2 <?xml version="1.0"?>
<名前 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<姓>山田</姓> <名>次郎</名>
</名前>

プログラム側はC#なので、オブジェクトをXMLSerializerに突っ込んでDBに保存・読込を行えばよいので実装が楽そう。問題はどうやって検索するのか?

  • プロパティーに分解

オブジェクトのプロパティー単位でレコードを追加する方法

ID PropertyName Value Type
1 山田 System.String
1 太郎 System.String
2 山田 System.String
2. 次郎 System.String

こちらは検索はできそう。でもレコード数が多くなるので、Insertが大変そう。

0 件のコメント: