濃縮還元オレンジニュース
FriendFeedではMy-SQLを使い,どのようにスキーマレスのデータを保存しているのか
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
バックナンバー
濃縮還元オレンジニュース
- 出版の未来
- ギャル専門マーケティング会社社長に,ギャルのケータイ最新事情を聞く
- オープンソースソフトウェアの育て方
- Googleによる「大規模な検索システム構築の課題」
- FriendFeedではMy-SQLを使い,どのようにスキーマレスのデータを保存しているのか
- 「Jaiku」がGoogle Codeでオープンソース化
- Apple,新JavaScriptエンジン「Nitro」を搭載した「Safari 4」パブリックベータ版を公開