シャーディングする時に MySQL の AUTO INCREMENT は使えないので、
どうしたら実装できるのかなと・・・・。
答えは簡単で、
Oracle / PostgreSQL の 「シーケンス」っていう機能をマネすればいい。
シーケンスは異なるテーブル間でユニークなIDを管理するための機能。
ちなみにOracleには AUTO INCREMENT がないから、
代わりにシーケンスを使う。
ただ、MySQLにはシーケンスがないから採番テーブルを使う。
MySQL公式サイトの
「 LAST_INSERT_ID(), LAST_INSERT_ID(expr)」の説明にありました。
http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html
CREATE TABLE sequence (id INT NOT NULL); INSERT INTO sequence VALUES (0); UPDATE sequence SET id=LAST_INSERT_ID(id+1); SELECT LAST_INSERT_ID();
以上です。