2

1つのシステムAからシステムBにデータを転送する必要があります。システムAはユーザーIDをUUIDで格納し、システムBはそれらを整数として格納します。

MySQL selectステートメントを使用してシステムAからデータを取得して保存し、それをシステムBに転送しています。MySQLselectステートメントでUUIDを整数に変換する簡単な方法はありますか?

4

1 に答える 1

3

コメントで説明されているように、UUIDを単純に整数に変換して、一意であると期待することはできません。UUIDは128ビットですが、INT(10)おそらく32ビットです。これは、96ビットを無視する必要があることを意味します。これは、非常に多くの潜在的な衝突に相当します(一意の32ビット値ごとに約78オクティリオンの異なるUUID)。

すべてが失われるわけではありません。32ビットで最大約40億のユーザーを表すことができ、おそらくそれで十分だからです。実際に行う必要があるのは、既存のUUIDを整数にマップすることだけです。これは、実際には非常に簡単です。

これを実現するために、UUID(主キーとして)と一意の整数(おそらく自動インクリメントフィールド)の両方を格納する変換テーブルを作成できます。これを使用して、システムAからシステムBに(およびその逆に)マップできます。このテーブルを2つのデータベースのいずれかに配置することも、別々に保持することもできます。個人的には、システムBに入れます。これは、userId整数値が実際に意味をなす場所だからです。

于 2012-10-16T03:53:36.273 に答える