SlouchDB2 0.2.1

SlouchDB2 0.2.1

Allen Ussher 维护。



SlouchDB2 0.2.1

SlouchDB2

** 警告:这仍然是一个非常正在进行中的项目。**

这是 SlouchDB https://github.com/allenu/slouchdb 的重写。

SlouchDB2 是一个基于日志的类似 NoSQL 的,面向 Apple 项目(Mac 和 iOS)的分布式单用户数据库。

  • 它基于日志,因为所有对对象(添加、删除、修改属性)的更改都存储为差异命令。可以通过回放日志生成数据库的快照。

  • 类似的 NoSQL,因为它存储任意文档,每个文档都是一组键值对。键是字符串,值是 JSON 支持的类型。

  • 它是分布式的,因为在每个对数据库更改有贡献的设备都会写入自己的日志文件。每个设备负责维护数据库当前状态的快照。此数据库状态不共享;只有日志是共享的。

  • 它是单用户的,因为由于日志的存储和同步方式,它不适合多个用户能够同时从不同设备修改条目的情况。此数据库假设只有一个用户使用多个设备对数据库进行修改。因此,当两个设备对同一对象进行修改时,发生冲突的可能性较低。

重写 SlouchDB 为 SlouchDB2 的目标如下

  • 简化原始实现。原始实现的一些地方使用了更复杂的命令式风格。从那时起,我已经转向使用更加函数式、声明式的风格,我发现这导致了更易于理解的代码,代码更简洁,错误更少。

  • 使其更易于应用程序使用。这通常意味着针对最常见的情况。原始实现更加开放,可能不是必需的。这导致了其复杂性和客户端对模型需要理解得更多的必要性。

  • 为性能而设计。原始实现使用了某些缓存,但没有针对通常的同步场景。也就是说,它没有充分考虑在不同设备之间同步可能不会按常规计划进行,并且数据库的快照可能没有针对这种不规则的计划进行优化。

  • 更好地整体文档。