質問

Iを生成しなければならない独自の記録idで指定された独自の文字列になります。

を使ってみましたuuidフォーマットのようであることを予期しています。

というのが私たちの見解はlengthly.

いる必要がありまcutdownのuuidの文字列9f218a38-12cd-5942-b877-80adc0589315を小さくなります。を取り除き'-'を救うことができま4字.何が安全部から削除uuid?いらない普遍的にユニークなidが利用uuidとしてのソースが切文字列です。

また独自のidで特定のサイト/データベースのSQLサーバー/ADO.純データサービス

あらゆるアイデアやサンプルから他の言語で

かまいません。

役に立ちましたか?

解決

なぜだけではなく、ベース64文字列に変換しませんか?あなたはそのように22個の文字にそれを減らすことができます。

をBase64文字列としてUUIDを保存

他のヒント

あなたはおそらくuniqueindentifierデータ型を使用する必要がありますMS-SQLを使用している場合、それはコンパクト(16バイト)の両方で、SQLエンジンはそれについて知っているので、それを使用して、インデックスとクエリを最適化することができます。

UUIDは、一意の(ほぼ)128ビットを提供します。あなたは16進バイト、または22 base64でエンコードされた文字にそれを短縮することがあります。私はそれだけでその意味を失い、それ以外の場合は、UUIDの任意の一部を除去することをお勧めしません。すべての128ビットが意味を持つようにUUIDを設計しました。あなたはそれよりも少ない場合は、あなたには、いくつかの他のスキーマを使用する必要があります。

あなたが唯一のバージョン4つのUUIDが使用されていることを保証することができれば、

たとえば、あなただけの最初の32ビット、またはちょうど最後の32ビットを取ることができます。あなたは、独自性を失うが、あなたはかなりランダムな数字を持っています。単に固定されたビット(バージョンおよび変異体)を避ける。

しかし、あなたはそれを保証することはできません場合は、実際の問題を持っています。バージョン1つのUUIDのために、最初のビットは、同じ日に生成されたUUIDのためのユニークされず、最後のビットは、同じシステム内で生成されたUUIDのための固有でないであろう。あなたはUUIDをCRCとしても、それはあなたが一意の16ビットまたは32ビットを持っていることを保証するものではありません。

この場合、単にいくつかの他の方式を使用しています。システム乱数ジェネレータを使用して32ビットの乱数を生成し、あなたのユニークなIDとしてそれを使用しています。あなたはその長さをストリッピングする予定がある場合のUUIDに依存しないでください。

のUUIDの128ビット16バイトまでとなります。ないエンコードを取得しましたのでど16バイトまでとなります。Uuidは一般的に記述進数で、32バイトの読みの文字列です。その他のエンコーディングでは、異なる結果:

  1. base-64巻3 8ビットのバイト4 6ビットの文字は、16バイトのデータが22文字
  2. ベース-85巻4 8ビットのバイト5の64ビットの文字は、16バイトのデータが20文字

ようにしたい場合は可読文字列をどのような標準共通のエンコードを使用するか選んでください。

UUIDは128ビットを有します。あなたはそれのCRCをやって考えられていますか?それは、簡単に16または32ビットにそれを得ることができ、すべての元の情報を使用します。 CRCは十分ではない場合、あなたは常に(例えば、SHA256)適切なハッシュの最初の数バイトを使用することができます。

あなたは本当にただUUIDを削減したい場合は、

、それのフォーマットは RFCに記述されています4122 に。あなたの実装がそれから必要はありませんどのような部分を把握することができる必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top