CouchDB 用于广泛分布的站点
CouchDB for widely scattered sites
我们正在开发一个科学网站,其中:
* 一个权威数据源(master)
* 150 多台边缘服务器分布在世界各地(客户端)
* 连接到边缘服务器(子客户端)的潜在 5K 移动用户
我们需要从master复制地理空间数据(每个文档大约几百字节)并分发到全球。
许多边缘服务器以及移动设备只会偶尔连接。带宽可能非常低。
整个数据集可能会增长到 200GB 左右,但可以将其分割成更小的地理空间集以进行更小的涓流复制。
数据大部分是静态的。需要传播的更改远少于 1%。
我们的解读是 CouchDB 可能非常适合这个。有什么我们遗漏的吗?
- 由于数据只在源端改变,处理复制
冲突变得非常简单
- GeoCouch 现在支持 GeoSpatial 搜索(不如我们目前使用的 PostGIS 数据库好,但是
可能够好了)
- 鉴于数据的流失率较低,CouchDB 索引应该有所帮助
- 我们不关心低延迟交易,(数据更新慢)
- GeoJSON 非常适合我们的数据类型
- 我们真的想要免费复制
- 我们确实希望对数据进行快速本地搜索(基于空间和其他特征,我们会得到这个吗?)。速度是通过人的表现来衡量的,例如google搜索,而不是大规模自动搜索
- 我们会担心损坏和故障检测。但是,在边缘服务器发生灾难的情况下,似乎可以转储并重新加载数据库,对吗?
还有其他我们应该关注的东西吗(例如 couchbase,)
这里要提出的主要问题是您是否打算使用过滤复制。这是一个漂亮的 CouchDB 的最弱点。
问题是,如果您分散的服务器,最重要的是,客户端只复制一部分数据,您将需要设置过滤功能,该功能没有索引。建立新的客户端连接后,它将 运行 处理 200 GB 的文档,相信我...
在上述情况下,解决方案是 Couchbase + SyncGateway,或一些基于自定义视图的复制层(这也是一个选项,因为您不会有太多更改,因此您可以简化它)
另一方面,如果您只有一种复制方式,您可能会发现您并没有从 CouchDB 同步机制中获益太多,这意味着同样的结果很可能通过以下方式实现任何其他集群数据库,例如 ElasticSearch,它具有惊人的查询性能、二进制内部分片协议、热节点插入,并且使用起来非常有趣
顺便说一句,Couchbase 也使用二进制复制机制,只要不使用 CouchDB 协议进行双向数据交换和冲突解决,这种机制比 CouchDB 更有效。
我们正在开发一个科学网站,其中: * 一个权威数据源(master) * 150 多台边缘服务器分布在世界各地(客户端) * 连接到边缘服务器(子客户端)的潜在 5K 移动用户
我们需要从master复制地理空间数据(每个文档大约几百字节)并分发到全球。 许多边缘服务器以及移动设备只会偶尔连接。带宽可能非常低。
整个数据集可能会增长到 200GB 左右,但可以将其分割成更小的地理空间集以进行更小的涓流复制。
数据大部分是静态的。需要传播的更改远少于 1%。
我们的解读是 CouchDB 可能非常适合这个。有什么我们遗漏的吗?
- 由于数据只在源端改变,处理复制 冲突变得非常简单
- GeoCouch 现在支持 GeoSpatial 搜索(不如我们目前使用的 PostGIS 数据库好,但是 可能够好了)
- 鉴于数据的流失率较低,CouchDB 索引应该有所帮助
- 我们不关心低延迟交易,(数据更新慢)
- GeoJSON 非常适合我们的数据类型
- 我们真的想要免费复制
- 我们确实希望对数据进行快速本地搜索(基于空间和其他特征,我们会得到这个吗?)。速度是通过人的表现来衡量的,例如google搜索,而不是大规模自动搜索
- 我们会担心损坏和故障检测。但是,在边缘服务器发生灾难的情况下,似乎可以转储并重新加载数据库,对吗?
还有其他我们应该关注的东西吗(例如 couchbase,)
这里要提出的主要问题是您是否打算使用过滤复制。这是一个漂亮的 CouchDB 的最弱点。
问题是,如果您分散的服务器,最重要的是,客户端只复制一部分数据,您将需要设置过滤功能,该功能没有索引。建立新的客户端连接后,它将 运行 处理 200 GB 的文档,相信我...
在上述情况下,解决方案是 Couchbase + SyncGateway,或一些基于自定义视图的复制层(这也是一个选项,因为您不会有太多更改,因此您可以简化它)
另一方面,如果您只有一种复制方式,您可能会发现您并没有从 CouchDB 同步机制中获益太多,这意味着同样的结果很可能通过以下方式实现任何其他集群数据库,例如 ElasticSearch,它具有惊人的查询性能、二进制内部分片协议、热节点插入,并且使用起来非常有趣
顺便说一句,Couchbase 也使用二进制复制机制,只要不使用 CouchDB 协议进行双向数据交换和冲突解决,这种机制比 CouchDB 更有效。