3

ドキュメントで「文字列フィールドにインデックスが付けられている場合は VARCHAR(255)、それ以外の場合は CLOB」を読みました

フィールドにインデックスを付けたくないが、VARCHAR 表現が必要な場合はどうすればよいですか? 例えば:

case class User(login: String, passwordHash: String, firstName: String, lastName: String, email: String, country: String, city: String, aboutMe: String);

login と email のみが索引付けされますが、passwordHash、firstName、lastName、country、city は CLOB にすべきではありません。これらは短いフィールドであり、CLOB はそれらにとって圧倒されるからです。このフィールドを VARCHAR としてマークするにはどうすればよいですか? それ以外の場合、aboutMe には長いテキストが含まれる可能性があるため、CLOB にする必要があります。最大 (255 文字) が必要ない場合、VARCHAR フィールドの長さを制限するにはどうすればよいですか? たとえば、passwordHash は 32 文字を超えることはできません (もちろん、ハッシュ方法によって異なります)。

ありがとうございました。

4

1 に答える 1

3

CLOB値宣言のオーバーヘッドは、VARCHARほんの数バイトです。SORM の背後にある哲学は、構成よりもすべての規則です。このアプローチは、SORM でボイラープレートを排除する方法の基礎です。この時代では、データベースがいっぱいになった場合のこのオーバーヘッドの結果である可能性がある数ギガバイトの余分なストレージ容量はほとんど問題にならないため、最大限の互換性のためにこれらの設定を使用することが決定されました.

ボイラープレートに対する SORM のアプローチのため、API によって公開されるこれらのものを微調整する方法はありません。それらは将来的に現れるかもしれませんが、問題が注目を集めた場合、おそらくEntity.

ただし、そのようなことを制御することを主張する場合は、非常に簡単な解決策があります。SORM にスキーマを生成させ、選択したデータベース管理ツールを使用して、列、インデックス、またはなんでもいい。列のテキスト型 (CLOB、VARCHAR など) を切り替えても、問題は発生しません。

于 2012-11-29T16:53:23.477 に答える