【问题标题】:How does Etherpad's timeline feature work?Etherpad 的时间线功能如何工作?
【发布时间】:2012-06-28 09:59:05
【问题描述】:

我想了解 Etherpad 的时间线功能是如何工作的。

如果您不知道这里的 etherpad 软件是它的一个实现 - http://piratepad.net/

做一些编辑,写点东西,加粗,使用编辑器,然后在右上角你会看到时间线。点击它并播放它。

我可以看到这样的 JSON 响应 - http://img6.imagebanana.com/img/vmot5xt0/Selection_060.png,但任何人都可以将其分解为易于理解的内容。

这是来自它的 Node.js 端口的一段代码 - https://github.com/Pita/etherpad-lite/blob/master/src/node/handler/TimesliderMessageHandler.js#L359

我对了解 JSON 响应及其工作原理非常感兴趣。还有什么数据库最适合此类应用程序(etherpad、google docs 等)。 Nosql(如 mongodb)或 sql(如 mysql)。

【问题讨论】:

    标签: java node.js real-time comet etherpad


    【解决方案1】:

    当您拖动时间滑块时,相关更改会从服务器发送到您所发现的客户端。

    更改被编码为编辑现有文档内容以成为新文档内容的指令。见https://github.com/ether/etherpad-lite/wiki/Changeset-Library

    原文描述为:https://github.com/ether/pad/blob/master/infrastructure/ace/easysync-notes.txt

    Etherpad 主要在 SQL 上运行。也许有其他 DB:s 的实验,但对于 etherpad 来说最重要的是读取/写入变更集的原始表。关系数据库可能是性能和健全性的最佳选择。 MySQL 是 etherpad 的默认设置。 Postgres 已经在开发中。 http://appolo85.wordpress.com/2010/03/22/first-steps-understanding-etherpad/处的数据库表列表

    (因此 nosql 类型的数据库因此不是一个好主意。如果 mysql 对你来说太无聊了,也许可以尝试一个全内存数据库以获得不错的速度提升。还要注意常规 etherpad 在 java+scala 上运行强大的服务器,如果您想设置自己的服务器,这可能是您的主要障碍。)

    【讨论】:

    • 感谢您的帮助,这似乎是一个好的开始。不过有一件事,对 mongodb 有什么想法吗?实际上,我正在制作一个类似的应用程序,它将记录除文本更改之外的其他内容。我想也许只是存储从客户端发送的 json 对象,同时在 mongodb 中创建 pad(它的 api 是基于 json 的,所以你只是发送/检索 jsons)将是一个好主意。同样在数百万行之后,如果我只是想记录可能需要添加另一列的其他内容,那么使用 mongo 就没有模式。使用 mysql,我将不得不改变表(如果你让我有点痛苦)。
    • 不要将 MongoDB 用于变更集。 (或者做,但然后承诺在失败时回信,以帮助其他人避免错误:-)。将 MongoDB 用于复杂的文档/对象,以避免创建数百个关系表。如果您希望 MongoDB 符合流行语,我建议改为使用内存数据库。 HSQLDB 和 VoltDB 比 Mongo 更酷。而且要快得多。通过“作弊”获得的速度,en.wikipedia.org/wiki/In-memory_database的完整信息
    猜你喜欢
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多