まえがき データにIDを持たせたいとき、単純な方法としては、DBの提供するauto incrementを使う場合やUUIDを利用することがある。それぞれの方法の利点欠点は以下の通り。 データベースのauto incrementを使う場合 利点: 特別な実装が必要ない 欠点: DBを1台で運用するとデータベースがパフォーマンス・障害のボトルネックになる DBを二台にするとIDのユニークさや順序の保証が困難 UUID(v4)※1を利用する場合 利点: 分散環境で各々がIDを生成しても衝突しない IDを公開したくない場合に、推測されにくいIDを生成できる 欠点: 128ビット必要、DBのインデクシングやプログラミング言語で扱うときに不利なことがある IDから時間の情報が失われる、例えば2つのIDを比べてどちらが古い投稿か判断できない 世界の大企業がどうしてるか 調べてみると多くの企業がブログなど
![Facebook, Twitter, Instagram等がどうやってIDを生成しているのか まとめ - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/e0ec7ba40beafc3022bc6d46819b316381b1b65a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9RmFjZWJvb2slMkMlMjBUd2l0dGVyJTJDJTIwSW5zdGFncmFtJUU3JUFEJTg5JUUzJTgxJThDJUUzJTgxJUE5JUUzJTgxJTg2JUUzJTgyJTg0JUUzJTgxJUEzJUUzJTgxJUE2SUQlRTMlODIlOTIlRTclOTQlOUYlRTYlODglOTAlRTMlODElOTclRTMlODElQTYlRTMlODElODQlRTMlODIlOEIlRTMlODElQUUlRTMlODElOEIlMjAlRTMlODElQkUlRTMlODElQTglRTMlODIlODEmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTk4NGJhM2FkOWNkNDRmNDA4ZDkwYTFjOTIwM2VhNTFm%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZGFpc3kxNzU0JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0xNjFlOWUzZjZkNmI3YjRjYjhmNjEyODAwM2FmNmZkMw%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D7d0c6a5ef6fb17c0142f9cc02850e34d)