FriendFeedの創業者であり開発者であるBret Taylor氏によるブログ記事の翻訳です。FriendFeedはTwitterやYouTube、
FriendFeedは2億5千万ものエントリやコメントなど、
エントリなどを格納するテーブルは次のような形になっています。
CREATE TABLE entities (
added_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id BINARY(16) NOT NULL,
updated TIMESTAMP NOT NULL,
body MEDIUMBLOB,
UNIQUE KEY (id),
KEY (updated)
) ENGINE=InnoDB;
上記のBLOB型であるbodyに実際のデータが入ります。データはPythonのディクショナリをpickle化
そしてインデックスを作りたい場合には専用のテーブルを作成します。たとえばユーザIDに対してインデックスを作成したい場合、
CREATE TABLE index_user_id (
user_id BINARY(16) NOT NULL,
entity_id BINARY(16) NOT NULL UNIQUE,
PRIMARY KEY (user_id, entity_id)
) ENGINE=InnoDB;
データ操作はPythonで書かれた専用ライブラリ
データとインデックスを別々に管理しているため一貫性に問題があることを認めていますが、
元記事には、
- 編注)
- key-valueストアについて詳しくは特集3
「[旬のライブラリ大集合] key-valueストア入門」 (WEB+DB Vol. 50 95ページ)をご覧ください。
URL:http://
SchemaLessData