table design:
表结构做成 id, key, value 还是 key, value 比较好。
按照 Bret Taylor 的分享,比较好的设计是
* added_id -> INT NOT NULL AUTO_INCREMENT PRIMARY KEY
* id -> UNIQUE KEY
* updated -> KEY
* body -> json
之所以加上自增的 added_id, 是因为 Mysql InnoDB 是按照主键顺序在磁盘上顺序存储
数据的。这样就能保证新数据总是能写在旧数据的后面,因为新数据读取的频率总会高于
旧数据,磁头不会波动太大。
e.g.
CREATE TABLE entities (
added_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id CHAR(32) NOT NULL,
updated DATETIME NOT NULL,
body MEDIUMBLOB,
UNIQUE KEY (id),
KEY (updated)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
notes:
* id -> uuid4.hex
参考
How FriendFeed uses MySQL to store schema-less data
http://backchannel.org/blog/friendfeed-schemaless-mysql