お手軽にランダムなIDを取得したい時にUUIDはとても重宝します。 でもたまに、 「このID(UUID)ってぶつかることない?対策しなくて大丈夫?」 と聞かれることがあります。 それに対して、 「ウィキペディア先生がぶつからねえって言ってたから大丈夫だよ!(#゚Д゚)」 で切り抜けるのもそろそろ限界のような気がするのでちゃんと調べました。 (もちろんウィキペディア先生を頼りました!) 2つの理論 UUIDの衝突確率について考える上で次の2つの理論が重要になります。 鳩の巣原理 誕生日のパラドクス 鳩の巣原理 鳩の巣原理とは、 m個の入れ物にn個のものを入れるとき、n > m ならば少なくとも1個の箱には2個以上のものが入る 9個の巣箱に10羽の鳩が入る場合、必ずどれかの巣箱には2羽以上入ることになるということです!(ウィキペディア先生) 考えれば当たり前のことですが同様にして考えれば、 「
/etc/fstabを書くときに、uuidになっててこまる。uuidの書き方を調べた ubuntuはuuidが標準になった。 uuidを使うと ディスクの接続が多少変わって /dev/sda1 /dev/sdb1 が入れ替わっても安心。 UUIDのサンプル ubuntuのfstabの例 1 # /etc/fstab: static file system information. 2 # 3 # Use 'blkid -o value -s UUID' to print the universally unique identifier 4 # for a device; this may be used with UUID= as a more robust way to name 5 # devices that works even if disks are added and re
snowflake は、Twitter 社が作成した、ユニークなID生成のネットワークサービスです。いくつかの簡単な保証で高いスケーラビリティを実現しています。Twitter 社が、MySQLから Cassandra に移行するにあたって、Cassandra にシーケンシャルな id 生成の仕組みが無かったことから作成したそうです。 snowflake についてはTwitter IDs, JSON and Snowflakeに書いてあります。 snowflake のコードは、Apache License, Version 2.0 でSnowflakeに公開されています。 スケーラブルな採番、背景的な話 Cloudでスケーラビリティのあるサービスを見据えてコードを書いていると採番に関する問題が必ず出てきます。従来、RDBの自動採番などに頼っていたのがコスト、スケーラビリティ、耐障害性の観点か
Javaでランダムで一意な文字列を生成したい...って時、どんなものを使ってますか?? そういう場面になったので見てみたものをちょっとマトメ。 桁数が長くてもいいから一意に 系 UUIDJDK1.5 で導入された java.util.UUID で UUID.randomUUID().toString(); をする。 取得される文字列(16進)は ffbac078-8cf0-483f-817d-184a5e812613 のような感じ。 これをMath.absで10進数にすると 2080304300 のような感じ ナノ秒これまたJDK1.5で導入された System.nanoTime() を使う。 取得される値は 1236777382401532000 て感じ。 複数Threadの場合には、ThreadIdをプラスしないと重複しちゃう事もあるだろうし...そうでなくても本当に重複しないって保証
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く