首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  NoSQL

关于实现类似知乎草稿箱的问题

  •  1
     
  •   wqchen · 2016-05-05 17:28:10 +08:00 · 2699 次点击
    这是一个创建于 1262 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在做一个草稿箱的小功能,类似于知乎的草稿箱。

    但遇到了很严重的问题: 目前服务端用到的数据存储为: Mysql , memcache, CouchDb; Mysql 存索引数据, memcache 做缓存, CouchDB 存长文本数据。

    我的实现思路是:发帖时,创建一条草稿数据,索引存 Mysql ,草稿的内容存在 CouchDB 。

    但问题是 CouchDb 是 MVCC 类型的 NoSQL ,这就导致了天生不适合存储频繁更新的数据。所以草稿箱上线不到一个月, CouchDB 中才 1000 多条 Document ,但占用的空间是 35G !!

    后来发现, CouchDB 有一个 Compact 功能,删除历史的版本记录数据, Compact 完成后才 85M 大小,这是合理的数据大小。 这就导致了,需要配置定期去 Compact 草稿数据库,同时也带来了 Compact 数据库的各种风险。

    请问各位大牛: 在现有的数据存储结构下:怎么去实现草稿箱功能?或者怎么去解决这个问题?

    10 回复  |  直到 2016-05-06 11:32:11 +08:00
        1
    menc   2016-05-05 17:45:47 +08:00
    为什么不利用 html5 的 local storage 呢
        2
    oott123   2016-05-05 18:20:24 +08:00 via Android
    那就存 MySQL 里嘛…
        3
    wqchen   2016-05-05 21:34:32 +08:00
    @oott123 存 mysql 里,在写帖子的时候,会频繁写表,代价有点高。
    我有想过,干脆用 memcache 实现,草稿数据就存在缓存里,但是假如 Memcache 服务宕机了,用户的草稿全没了。
        4
    liwanglin12   2016-05-05 21:37:01 +08:00 via Android
    REDIS 或者直接 local storage 喽
        5
    wqchen   2016-05-05 21:39:22 +08:00
    @liwanglin12 redis 可以持久化倒是。
        6
    wqchen   2016-05-05 21:43:41 +08:00
    @menc 不太了解 local storage ,是存在客户端本地的吗?
    知乎的草稿是可以多端同步的,数据应该是存在线上服务器。
        7
    leofml   2016-05-05 22:00:23 +08:00
    既然想节约储存容量, 那直接用 TokuDB 就可以了.
        8
    wqchen   2016-05-05 22:38:15 +08:00
    @leofml 了解了一下 TokuDB,的确是好东西啊。
    问题是现在现有的架构之下实现,用新的数据存储,还要新启动一个 service 。
        9
    ryanking8215   2016-05-06 08:49:18 +08:00
    memcache/redis 缓存草稿, mysql 定时保存?
        10
    wqchen   2016-05-06 11:32:11 +08:00
    @ryanking8215 也是一个办法。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2213 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 10:17 · PVG 18:17 · LAX 03:17 · JFK 06:17
    ♥ Do have faith in what you're doing.