目录

couchdb再研究

couchdb 原来cluster和replcator 并不是一回事

1,cluster 是指集群,所有的存储是分片的(sharding),而复制则是完全的拷贝

所以如果集群想要拿到完整的数据需要从多个分片中获取,然后合并,当然设计者的目的就是让这些集群节点提供并发支持从而提供性能,replicator却不同,它提供完整的数据,就是一个独立服务点,所以即使跨国也不会影响速度

2,couchdb的replicator 并不需要复制到所有的节点,只需要两两相连,这样它就可以通过级联传播到所有的节点,整个复制看起来像个链路表,可能是直线也可能有分叉

3,couchdb 的并发修改是个大问题,基本只要并发改就会出现问题,最终只能得一个数据,手工修改也只能选一个优胜者,这个要编程中注意

4,事务是没有的,也别想了,如果一定需要就在异常中处理吧,很多时候并没有那么重要,即使扣库存

5,备份最好的办法是replicator方式备份,但是如果continous就无法冷备,如果onetime就没法增量,所以应该是continous到备份服务器,然后备份服务器冷备data文件夹数据,这个数据库是无法看见具体到数据的不用客户端到话都被分片了

6,关于attacmennts 如果使用attachment图片清理就不要了,直接对数据库compact就可以了,而且图片会随着文档的删除而删除,但是内容中的图片没地方attach,而且整个图片命名规则都变了,没有bucket概念了

比如product,产品图片和描述中图片都放在attachments里面,按顺序排列,第一个是主图后面的是产品图片最后是描述图片,要想拿出产品图片,需要拿到所有图片然后剔除描述图片,也可以直接把content拿到另外一张表里,坏处是多一次访问,好处是减少IO

图片controller依然需要存在,用来代理图片的各种格式,thumbnail,same等等,比较简单了