假设有一个巨大的文件,其中更改的数量是巨大的,因此变更集的集合是巨大的。EtherPad 是否发送所有变更集?还是它会定期对文件进行快照,以避免发送真正旧的变更集?这一切是如何在后端数据库中实现的?
1 回答
重新发送变更集请参阅:https ://github.com/ether/etherpad-lite/tree/master/doc/easysync
没有文件可以拍摄快照,所以我假设您的意思是填充内容?如果是这样,不,Etherpad Lite 还没有保存元文本,但这是 Etherpad 可能需要实现的东西,以便时间滑块可以处理大内容的 pad(请参阅讨论此问题的相关问题)。旧的 Etherpad 确实有这个功能,但它是有代价的(可怕的数据库模式)。
Etherpad 数据库是通过称为 UeberDB https://github.com/Pita/ueberDB的东西抽象出来的。UeberDB 给 Etherpad 带来的最大胜利是在写入和可移植性之前的缓存层。UeberDB 使 Etherpad 能够将填充内容保存在内存中,并且不需要持续数据库写入的开销,写入排队以减少服务器负载。UeberDB 还允许站点管理员使用他们最喜欢的数据库,但代价是必须存储 KV。
RE 点 2 和 3,因为 Ueber 只会存储键值,您最终会在执行诸如全文索引之类的任务时遇到困难,这是 MySQL 的一个关键特性,尽管使用 MySQL 作为后端数据库。然而,最近已经克服了这一问题,并在 Mozilla 和其他各种 Etherpad 项目贡献者部分维护的分支中。MySQL 还提供了它自己的缓存功能,但这对 Etherpad 没有用,因为数据处于不断变化的状态。
我们应该清楚我一直在谈论 Etherpad Lite,因为不再维护“旧 Etherpad”,因此应该避免使用。所有 Etherpad 文档都应参考http://etherpad.org的权威来源