FBCのSinatraとDBを使ったメモアプリの開発に取り組んでいます。
DBに保存するレコードのRPIMARY KEYとしてSecureRandom.uuid
で生成した文字列をCHAR型のカラムに保存しようと考えています。
最大文字列長をCHARに設定しようと思ったのですが、SecureRandom.uuid
で生成した文字列が何文字か分からなかったので調べました。
結論
SecureRandom.uuid
で生成した文字列の長さは36文字。
SecureRandom.uuid とは?
バージョン4のUUIDを生成するメソッド。
SecureRandom.uuid (Ruby 3.1 リファレンスマニュアル)
Ruby でID用のユニークな文字列を生成する方法 - karlley's tech blog
UUIDとは?
128ビットによる数値で16進数で表される文字列
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
文字数の内訳
UUIDは128ビット(16バイト)の値で、バージョン番号などに6ビットを用いるため、固有の識別情報は122ビットとなる。文字表記する際は先頭から4ビットごとに16進数の値(0~F)に変換し、「XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX」のように8桁-4桁-4桁-4桁-12桁に区切ってハイフンを挟んで記載する。
- 識別情報の桁数: 8 + 4 + 4 + 4 + 12 = 32文字
- ハイフン: 4文字
- 文字数合計: 識別情報32文字 + ハイフン4文字 = 36文字
UUID(GUID / 汎用一意識別子)とは - 意味をわかりやすく - IT用語辞典 e-Words
感想
ちょっと気になっていたのでスッキリした! ビットやバイトという言葉が出てくると一気に分からなくなるので一度時間を作って振り返る必要がありそう。
参照
SecureRandom.uuid (Ruby 3.1 リファレンスマニュアル)
Ruby でID用のユニークな文字列を生成する方法 - karlley's tech blog
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace