使用 MySQL 存储 schema-less 数据的探索

文章目录

    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

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式