2

動的データを含むテーブルを作成したいのですが、日付、ブール値、またはテキスト記事の形式にすることができます

例えば:

meta_key = "isActive" meta_value = "1"

また

meta_key = "theDate" meta_value = "2005 年 7 月 23 日 02:16:57"

また

meta_key = "説明" meta_value = "これは説明であり、このテキストは何度も続く可能性があるため、長いフィールドが必要です"

問題は、「1」が挿入されるたびに DB を過度に膨張させないために、meta_value がどのタイプのフィールドであるべきかということです。どのフィールドが動的であり、それ自体の長さのスペースのみを消費します。

私が明確だったことを願っています...

4

5 に答える 5

1

非構造化データまたはドキュメント(friendfeedなど)を保存している場合は、あなたが提案するように、非構造化データモデルのみを使用します。

代替ストレージの考え方

非構造化データには、SQL サーバーよりも適したデータ ストレージ システムが数多くあります。これらのいずれかを既存の構造化データベースと組み合わせることをお勧めします。

SQL オプション

これを行うことができず、非構造化データを SQL DB に格納する必要がある場合は、いくつかのオプションがあります。実際にはデータ型だけが問題ではなく、データの格納方法が問題になります。

  • データを読み取るアプリケーションが、複雑な文字列操作関数を使用せずにデータを簡単に解析できるようにするための構造。

  • アプリケーションでデータのモデルを定義できるため、データを読み取るときに何が得られたかがわかります。

次の 2 つのオプションは、これらの両方の課題に対するソリューションを提供します...

XML - xml データ型

保存するデータを考慮する必要があります。コンテンツを返し、コンテンツに対して複雑な検索を実行する必要がある場合は、XML が最善の策です。また、保存されたデータが定義された構造と一致することを検証することもできます (dtd を使用)。この記事を参照してください。

http://msdn.microsoft.com/en-us/library/ms189887.aspx

または JSON - nvarchar(max) データ型

Web ページに表示するため、または Javascript で使用するためにこのデータを返す必要がある場合は、JSON として保存するのが最も簡単です。直接操作して操作できるオブジェクト モデルに簡単にロードできます。欠点は、データの複雑な検索が XPATH に比べて非常に遅くなることです (すべてのオブジェクトを繰り返し処理し、一致するものを見つけます)。

他の言語または奇妙な文字からデータを保存している場合は、nvarchar (Unicode バージョン) を使用してください。それ以外の場合は、varchar が最も効率的です。

于 2009-11-11T09:44:20.747 に答える
0

これらは一時テーブルまたはライブ テーブルとして使用されていますか?

これは私がまだ見ていないアイデアですが、主にサイズの爆発を心配しているが、プログラムに少し余分な作業をさせることを気にしない場合は、うまくいくかもしれません. ただし、ベスト プラクティスは、独自のテーブル (OrderDate など) 内のフィールドを使用してこれらのメタ キーを作成し、説明や日付などを設定することだと思います。キャッチオール DB テーブルは多くの頭痛の種になる可能性があります。

次のアイデアを使用して、メタ テーブルを作成します。

MetaID MetaKey MetaVarchar(255) MetaText MetaDate

varchar、text、および date は null にすることができます。

挿入プログラムに挿入するセルを決定させると、データベース呼び出しは、null ではないフィールドを表示するだけです。短い項目は varchar で、長い項目はテキストで、日付を使用して日付の表示方法を変更できます。

于 2009-11-11T16:32:17.787 に答える
0

MySQL では、通常、Web サイトで使用する動的クラスのシリアル化されたバージョンを格納する blob データ型を使用します。

ブロブは基本的にバイナリ データであるため、データをシリアル化および逆シリアル化する方法を理解したら、ほとんどの場合、それでうまくいくはずです。

大量のデータの場合、効率が大幅に低下しますが、構造全体を変更する必要はありません。

Blob データ型のより良い説明は次のとおりです: http://dev.mysql.com/doc/refman/5.0/en/blob.html

于 2009-11-11T17:43:22.540 に答える
0

おそらくVARCHAR フィールド タイプが必要です。

CHAR とは対照的に、VARCHAR 値は、1 バイトまたは 2 バイトの長さのプレフィックスとデータとして格納されます。

于 2009-11-11T09:31:42.203 に答える
0

お役に立てれば:

datatype=Text
于 2009-11-11T09:32:21.007 に答える