質問
い店舗Uuidの作用を java.util.UUID にHSQLDBデータベースです。
当然のオプションは、単純に保存している文字列としてのコードおそらくだれなど)、varchar(36).
他のオプションは私の考えではこの考えの問題などのデータベースのサイズとクエリの速度もある巨大な懸念によるデータ量に関わるものと考えていきたいと思っています少なくとも)
解決
お持ちの複数のオプション:
- 店としてVARCHAR(36)としてだき,誠にありがとうござい考えられる。このま36バイト(288ビットスUUIDは、オーバーヘッド。
- 店舗毎のUUID二BIGINTカラムは、最も重要なビットとの有効ビット;使用 UUID#getLeastSignificantBits() や UUID#getMostSignificantBits() 腕の各部にダウンロードしましょう適切にこれまでの128ビットの領域UUIDは、他のオーバーヘッド。
- 店舗毎のUUIDとして、オブジェクトこの店舗としてのバイナリーの直列化バージョンのUUIDのクラスです。わからないどのくらいスペースを取り上げ;いいテストを行うデフォルトの直列化された形式のJava UUIDです。
のupsides、マイナス面のアプローチに基づかいのUuid周辺のアプリケーションにいっているだけで楽しいし、その文字列及び、その下振れの要倍の記憶容量のVARCHAR(36)アプローチであろうようなものに変え、これらが、大きいテナントDBクエリ、更新.だっているだけで楽しいし、ネイティブUuidのBIGINT方法だろうか低オーバーヘッド。
あ、としているのは嬉しいという速度および収納スペースの問題が多くよりくっているため、またご紹介いただきまし...続きることを認識しない場合が重要なターなどのデータをアプリが貯ました。としても、マイクロ-最適化のための性能は重要でない場合はその導入コストまでいることになります。その他、これら二つの問題を収納スペースのUuidの時間がかかる維持およびクエリのDB--と合理的に低重要性は安いコストでの保存のDBの指標をアップしていくことがとても簡単になります。:)
他のヒント
のものをお勧めします
char(36)
の代わりにvarchar(36)
.からないのでhsqldb、多くのDBMS charはちょっと高速に行います。のためのルックアップの場合、DBMSはスマートしでご利用いただけます。整数値を"発見"をごUUID.
例えば、intカラムをテーブルなどのchar(36).を挿入する時にテーブルに挿入してuuid.hashCode()、intカラムです。次に検索できるようなこ
WHERE intCol = ? and uuid = ?
しかし、場合にhsqldbはスマートのようにmysqlはsqlサーバーでの検索にintColその比較では数値のuuid.そのトリック検索によ百万円+記録テーブルによる文字列、およびその本質は迅速に整数値としてルックアップ.
HSQLDBが内蔵されていUUID
タイプ。そのに使用します。
CREATE TABLE t (
id UUID PRIMARY KEY
);
BINARY(16)を使用すると、別の可能性です。文字型未満のストレージスペース。上記で示唆したようます。
.. TYPEのUUIDをCREATE使用。..またはDOMAIN UUIDをCREATE私は
(タイプが、ほとんどではない、本当に)。一番簡単な方法は、あなた自身のUUID「タイプ」を作成するため、独自のドメインを作成することだと思いますまた、(あなたの代わりに「正常な」プライマリキーのそれを使用する予定の場合は特に)この質問への答えを考慮する必要があります。