作っているプログラムでランダムなIDが必要となったため、ちょっとリサーチしました。久しぶりにJavaでコードを書いています。 UUID 完全に分散した環境で使用するのには、UUID(Universally Unique Identifier)が最適です。1IDあたり16バイトの容量が必要となる点をのぞけば、理想的なIDと言えると思います。ただIDは大量に使用されるので、16バイトというサイズはちょっと気になります。 Snowflake SnowflakeはTwitterが使用しており、Apache Licenseで公開しているID生成方法です。ある程度分散した環境でも、1IDあたり8バイトの容量で利用できます。また非常に重要な特徴としてIDの先頭部分にタイムスタンプ利用しており、生成されたIDはある程度時系列に並びます。8バイト、つまり64bitを下記のように振り分けて使用します。 先頭4
![Snowflake的なID生成方法](https://cdn-ak-scissors.b.st-hatena.com/image/square/9420e54875006fe290b418a7b68cd52fbebdbcf8/height=288;version=1;width=512/http%3A%2F%2F2.bp.blogspot.com%2F-vCww27BC3hw%2FT5oOFm9T61I%2FAAAAAAAAAFY%2Fxjox6KB2nqg%2Fw1200-h630-p-k-no-nu%2F%2525E3%252582%2525B9%2525E3%252582%2525AF%2525E3%252583%2525AA%2525E3%252583%2525BC%2525E3%252583%2525B3%2525E3%252582%2525B7%2525E3%252583%2525A7%2525E3%252583%252583%2525E3%252583%252588%252B2012-04-27%252B12.09.48.png)