下面十条内容来自paperplanes的博主Mathias Meyer,他也是一位NoSQL的实践者,CouchDB就是其钟爱的数据库之一。正所谓爱之深恨之切,在使用CouchDB的过程中,他发现很多不顺手的地方,就是本文列举的十大问题。
View是在读时更新的
我们知道CouchDB不支持动态查询,也就是说你的每个查询,都需要事先创建一个对应的View,创建View是很快的,即使你的数据集很大,这 是因为CouchDB并不在创建View的时候就建立View索引,而是在读取的时候来做这个事。当在一个View上执行一次读操作时,CouchDB会 对比当前View中的索引更新时间与最后写操作时间,如果发现在索引更新之后又有写操作,那么会把这段时间的写操作合并到索引中再返回给客户端。
你可以想象到,如果数据集非常大,你创建完View后的第一次读取会是多慢。同样的,如果你两次读操作间隔期间有太多的写操作,那么也会导致读操作 非常慢,有的朋友通过cron任务定时对View进行查询,从而触发定时的索引更新操作,以减少真正读操作需要等待的时间,不得不说这真是蛋疼。这一切, 都是因为CouchDB的View是在读时更新导致的。
而实际上,如果你不愿意等待CouchDB去更新完索引后再返回数据,你也可以通过stale=ok参数指定它返回老数据即可,不用做更新操作。但 我们不能总是访问老数据,作者希望可以通过指定查询先返回老的数据,再进行相应的索引更新操作。而实际上这一功能已经在1.1.0版本中实现了,在 1.1.0版本中,添加了一个stale=upDate_after的指定,可以实现返回老数据后再在后台更新的功能。
缺乏自动压缩功能
CouchDB采用了append-only的方法进行数据更新,也就是所有数据的写操作,都不会修改原来的数据文件,而是追加上新的版本来实现。 这使得CouchDB能够实现对同一条数据保存多个版本。也使得CouchDB的数据文件永远不会被改花掉。因为它永远在做append操作,即使出现问 题,只要去掉尾巴上一某一段数据就能回到之前某个时间的数据快照。
然而,这些好的特性必然需要付出代价,这代价就是数据大小会只增不减的膨胀。所以,数据压缩工作是迟早都得做的事。但是CouchDB并没有提供数据自动压缩的功能。这让人很郁闷。
不支持局部更新
局部更新的意思就是,不更新整条数据,只更新其它某个属性或字段。这个看似天经地义的功能,在CouchDB里却没有。在CouchDB中,所有的update操作都需要对整条数据进行更新。
缺乏内存的扩展性支持
CouchDB的同步机制是很牛X的,这几乎是它的杀手级功能。你可以随意在集群中添加删除节点,可以随意指定Master和Slave的角色, 数据都会很好的同步到所有节点上。能达到这样的效果,是由CouchDB本身的机制决定的。然而,我们并不能做跨节点的读写操作。
在这方面,CouchDB-lounge算是一个尝试,但是它把整个架构复杂化了,我感觉不太舒服。
分页实现起来会很奇怪
如果你要对CouchDB中的数据进行分页展示,这会比较麻烦,在《CouchDB权威指南》中有一个对分页的实现,但是这个实现给人感觉非常别扭。如果你要在CouchDB中实现分页的话,最好还是用那个“获取更多”按钮的方式来做。
范围查询使用不太方便
如果你的KEY是这样的[‘123’, ‘2010/07/21’],其中前一部分为查询的key,后一部分为时间,用于保证记录的顺序性。这时候你要查询所有’123′开头的记录时,就需要指 定起始条件为 [‘123’],并且还必须指定一个终止条件为[‘123’,{}],这样让人感觉用起得很不方便。
CommonJS无法用于mapreduce函数中
在CouchDB 0.11版本中,CommonJS已经可以用在view函数上,但是一直不能用在mapreduce函数中。这让我总是重复一些写过的代码。
缺乏document之间完备的包含关系
在CouchDB 0.11中,map函数可以通过{_id: doc.other_id}的方式包含另外一个document的引用,在查询时能够获取到对应这个文档的id,但是再进一步,如果我想再获取被包含的这 个文档的属性,那就没办法了。希望能够有办法通过当前集合的查询,获取并返回这个包含的文档的某些属性。
读操作总是会落到磁盘上
CouchDB没有实现自己的缓存。在写操作中,你可以通过delay commit的方式将写操作延迟同步,这样就避免了每次写操作就需要写磁盘。但除此之外,CouchDB没有做任何缓存。对于移动设备上的CouchDB 来说,写磁盘可能会好一些,毕竟移动设备上的flash设备比 服务器 上的传统磁盘性能要好一些。
没用的错误信息
CouchDB的错误信息经常让人摸不着头脑,根本就看不明白错误出在哪里。比如下面这一段,你能告诉我它说明了什么问题吗。
好了,大概就这些吧。虽然上面说了这么多CouchDB让人不爽的地方,但是总的来说,我还是很喜欢CouchDB的,虽然有上面一些让人不爽的地 方,但是它还是能帮我处理很多问题。所以争论一个东西是否要用,并不是看它能不能满足所有需求,而是看它能不能满足你要的核心需求就行了。
英文:
原文链接:
【编辑推荐】
地下城与勇士中,怎么领GSD的主线任务:疯掉的魔法师?(鬼剑士除外怎么领?)
任务名:林纳斯 任务过程:从下面的门口出去往左,和林纳斯对话后,任务就完成 任务报酬:100金币 任务备注:需要完成【赛丽亚】任务后 任务名:冒险的开始 任务过程:通关一次洛兰地下城 任务报酬:200金币、新手的皮腰带(物理防御力+7) 任务备注:需要完成【林纳斯】任务后 任务名:噪音公害 任务地图链接: 任务过程:在洛兰深处杀死12只哥布林,投掷哥布林不算 任务报酬:200金币和(腐蚀的铁剑、质的木棍、劣质的手枪、初级魔法师法杖、木质十字架)里面的其中一件武器 任务备注:需要完成【冒险的开始】任务后 任务名:流动的丛林——格兰之森 任务过程:去艾尔文防线左边的城市“赫顿玛尔”找风振对话 任务报酬:100金币 任务备注:需要完成【噪音公害】任务后 任务名:牛头巨兽的狂暴 任务过程:通关幽暗密林副本 务报酬:500金币、冒险者之衣(+37物理防)、旧棉布护腕(魔法防+139) 任务备注:需要完成【流动的丛林——格兰之森】任务后 任务名:让人头痛的猫妖 任务过程:杀死位于阴暗密林深处的猫妖10只 任务报酬:500金币和(时芽腰带、皮束腰)其中一个 任务备注:需要完成【牛头巨兽的狂暴】任务后 任务名:呼唤闪电的哥布林 任务过程:和夏洛克对话,他位于赛莉娅的上面 任务报酬:100金币 任务备注:需要完成【让人头痛的猫妖】任务后 任务名:落雷凯诺的传说 任务过程:通关雷鸣废墟副本 任务报酬:避雷指环(魔法防+197),+100经验书7本 任务备注:需要完成【呼唤闪电的哥布林】任务后 任务名:进入丛林深处的人 任务过程:去跟GSD对话,GSD位于赫顿玛尔赛莉娅的右边 任务报酬:100金币 任务备注:需要完成【落雷凯诺的传说】任务后 任务名:毒的香气 任务过程:通关猛毒雷鸣废墟 任务报酬:600金币、精制的稻草项链(魔法防+645) 任务备注:需要完成【进入丛林深处的人】任务后 任务名:疯掉的魔法师—克拉赫 任务过程:通关冰霜幽暗密林 任务报酬:魔力之花和(棉布凉鞋、时芽外靴)其中一个 任务备注:需要完成【毒的香气】任务后 你仔细看看,按照这个顺序过任务,就OK了,你说的那个任务必须先过这个 通关猛毒雷鸣废墟,完了去GSD出接你说的那个任务。 。 。
喝可乐对人身体有什么坏处吗?
可乐等碳酸饮料不宜常喝的原因有五:1)可乐等碳酸饮料含有气体,即二氧化碳二氧化碳会刺激胃液分泌,胃酸过多容易感觉腹胀,降低食欲,而减少日常饮食摄食。 饮食中若营养素摄取不足会影响正常生长发育、学习效果、运动成绩、工作表现和身体健康。 2)碳酸饮料含有砂糖一罐355 c.c.的可乐,大约含有35 公克糖,相当於140 卡热量,相当於半碗饭的热量。 不过,只有热量相等,营养素却相差大,因糖只含有热量,其他营养素一点也没有,是空有热量的空卡食物或垃圾食物,经常饮用,会积少成多,使体重增加、同时也易养成嗜甜的不良饮食习惯,只喜欢喝有甜味的水,而不喝白开水;另外糖对牙齿健康也有不良的影响。 3)碳酸饮料的另一成分磷酸磷酸会降低体内钙的吸收,影响骨骼生长及身高的正常发育。 正值生长发育期的儿童与青少年,需要充分的钙质,使骨骼正常生长发育,维持良好的骨骼新陈代谢,并使骨骼密度达到最佳状况,所以更不宜饮用碳酸饮料。 另外,磷酸还会阻碍铁质的吸收,铁是制造血液的主要材料之一,一旦铁质不够,会引起缺铁性贫血。 4)可乐中含有的咖啡因咖啡因会刺激心脏肌肉收缩,加速心跳及呼吸;会刺激胃酸分泌,伤害肠胃;具有利尿作用,老人容易有脱水的危险;长期饮用会上瘾,一旦不喝,就觉得浑身不对劲,无精打采或头痛。 若长期过量饮用,即每日咖啡因超过 200 毫克,便会有消化不良、头痛、失眠、神经质、发抖、易怒、心跳加速等慢性中毒现象。 5)牙齿受到腐蚀
帮忙找桂花树的用途!
桂花的用途 观赏。 桂花树叶子十分茂盛,且一年四季常绿,可称得上是重要的庭院观赏花木,可盆栽也可插瓶观赏。 每到仲秋时节便清香飘溢,让人心情舒畅。 入菜。 桂花具有镇静止痛、通气健胃的作用。 桂花中含有多种氨基酸和丰富的维生素,桂花食品主要是吃花瓣。 成茶。 桂花茶是我国特产,历史悠久,从香气的高雅馥郁与食用价值来讲,银桂最好,数量也最多。
将桂花、纯藕粉加白糖冲调,就成了桂花藕粉,味美且开胃。 取上等小枣,加糖煮,汤将尽时,加入桂花,即成健脾开胃的桂花蜜枣。 中医认为,桂花性温味辛,煎汤、泡茶或浸酒内服,可以化痰散瘀,对食欲不振、痰饮咳喘、肠风血痢、经闭腹痛有一定疗效。 桂枝、桂籽、桂根皆可人药。 由桂枝、芍药生姜、大枣、甘草配制的桂枝汤,专治外感风邪、发热头痛等症。 桂根味甘微涩。 桂花为木犀科植物的花、其味辛、温归经入肺、大肠经,对「瘕疝」是指腹部常热痛,「奔豚」是指肾脏寒气上冲或肝脏气火上逆冲胸直达咽喉至腹部绞痛、胸闷气急、头晕目眩、心悸烦燥不安、肠道积气和蠕动亢进或痉挛、痰涎咳喀不出等有良好疗效。 常食用对养颜美容、护肤有明显的帮助。
古人认为桂为百药之长,所以用桂花酿制的酒能达到「饮之寿千岁」的功效。 酿酒。 桂香怡人,桂花酒当然更好喝。 上世纪70年代初至80年代,中山陵园酿制的桂花酒一度很有名气。 甜中带香的桂花酒,嫩黄的酒色中带着淡淡的翠绿,晶莹剔透。
桂花茶可养颜美容 ,舒缓喉咙 ,改善多痰、咳嗽症状 ,治十二指肠溃疡 ,苇麻疹 、胃寒胃疼 、口臭 、视觉不明 。 桂花茶有清香提神功效。 桂花经沸水稍烫后捞起晾干,用白糖溃起来,密封于瓶里,以保持颜色和香气,可作为食品香料。 将桂花、纯藕粉加白糖冲调,就成了桂花藕粉,味美且开胃。 取上等小枣,加糖煮,汤将尽时,加入桂花,即成健脾开胃的桂花蜜枣。 中医认为,桂花性温味辛,煎汤、泡茶或浸酒内服,可以化痰散瘀,对食欲不振、痰饮咳喘、肠风血痢、经闭腹痛有一定疗效。 桂枝、桂籽、桂根皆可人药。 由桂枝、芍药生姜、大枣、甘草配制的桂枝汤,专治外感风邪、发热头痛等症。 桂根味甘微涩
发表评论