2009-05-20 9 views
14

sqliteは、著者が "Manifest Typing"と呼んでいるものを使用しています。これは、基本的にsqliteが動的に型付けされていることを意味します。必要に応じて、 "int"列にvarchar値を格納できます。sqliteのマニフェスト入力はいつ便利ですか?

これは興味深いデザインの決定ですが、sqliteを使用するたびに標準のRDMSのように使用し、静的であるかのように扱いました。実際、他のシステムでデータベースを設計する際に、動的に型指定された列を使用することを望んでいませんでした。

この機能はいつ便利ですか?静的に型付けされた列の場合と同じように、実際にはうまく使用できなかった人は誰ですか?

答えて

5

実際には、タイプを使いやすくするだけです。このフィールドがデータベースレベルでどれくらい大きくなっている必要があるか、またはインタジェージャーの数がいくつあるかについて心配する必要はありません。多かれ少なかれ、それは「なぜ」ではないのですか?もの。

一方、SQL Serverの静的な型指定では、システムの検索とインデックス作成がより適切になる場合がありますが、すべてのアプリケーションの半分でデータベースのパフォーマンスの向上が問題になるかどうか、他の理由(選択テーブル、指数テーブルなどにテンポラリテーブルが作成されている)では「不良」です。

私は.NETプロジェクトのためにSqLiteをクライアントのキャッシュとして使用していますが、これはあまりにも簡単すぎるためです。今はSQL Serverと同じGUIDを使用することしかできない場合、私は幸せなキャンパーになります。

+2

これは、varcharフィールドが特定の文字数に制限されなくなるなど、従来のRDMSについて常に悩まされていたような良い点です。 –

+0

私には他にも少なくとも2つの「回答」があると思いました。これは、SqLite.NETをより多くのものにする必要があるという証拠です。 SQL ServerやExpressを必要としない場所での使用と展開は簡単です。 – JasonRShaver

4

動的タイピングは、設定の設定などを保存するのに便利です。たとえば、Windowsレジストリを使用します。各キーは、次の形式のSQLiteテーブルを持つようなものです。

CREATE TABLEの設定(名前TEXT PRIMARY KEY、値)。

ここで、値はNULL(REG_NONE)またはINTEGER(REG_DWORD/REG_QWORD)、TEXT(REG_SZ)、またはBLOB(REG_BINARY)です。

また、私は文字列の最大サイズを強制しないことの有用性についてJasonsに同意する必要があります。たいていの時間のため、これらの制限は純粋に任意です。いつかVARCHAR(30)に格納する必要がある32バイトの文字列を見つけることができます。

関連する問題