我对CouchDB 0.10进行了一系列有点残酷的测试,并且它处理得很好(例如服务器的netstack陷入困境,但我最好能告诉CouchDB仍在运行)。不幸的是,如果我无法说服客户和雇主允许我使用它,那么这一切都不重要。
我听过的常见恐惧。
“它只是版本.10,甚至不是生产版!”
“但[MySQL | PostGres | Oracle]适用于[对象元数据存储|文字”文档“存储|等]!”
“与XYZ相比,这看起来过于复杂(基于地图缩减的查询,REST api,JSON等)。”
“到底是什么erlang?”
*通常我的规则是告诉客户我将解决问题,但不详细说明。不幸的是,有些客户认为自己是后座建筑师/工程师,或者理所当然地希望得到通知。
**先发制人地认为这与编程有关,因为如果管理层不能/不会看到跨越已知行为的风险,那么工具有多好无关紧要。
答案 0 :(得分:6)
几年前,我遇到同样的问题,试图说服客户使用python + postgreSQL而不是asp,php或其他任何东西。
除了解释技术优势之外,对我有用的是增加一些成功案例。
在CouchDB案例中,您可以引用:
在this presentation中有一张幻灯片引用了其他公司。
答案 1 :(得分:5)
我最喜欢的CouchDB背后的KISS原理的一个例子是“所有代码路径都经过测试”,CouchDB大约是15k行代码,而ActiveRecord,Rails的ORM大约是25k LoC(我上次检查过)只是为了使RDBMS与OO语言对话。虽然这显然是比较苹果和平房,但它应该表明CouchDB本身相对简单并且具有可管理的代码大小。 (所有这些都很重要,因为每行代码的错误数量是不变的)
CouchDB的另一个好处是它是一个Apache项目。它确保了一个稳定的社区(不一定是软件:)和长寿,在将资金投入到将要使用多年的项目之前,这一点很重要。
@renier是什么让你觉得MongoDB经过了更好的测试?此外,Erlang在单个核心上非常棒,并且在2个,4个或更多时不会跛脚。这并不是说你在使用单个cpu时只能获得它的好处。 Erlang的设计原则使软件能够全天候运行,直到操作人员忘记如何对应用程序进行故障排除,因为它永远不会中断(有一项英国电信研究支持这一点,它还提到着名的9-9可用性)。 p>
答案 2 :(得分:3)
我认为客户有一系列有效的问题和担忧。只是对数据库运行一组测试并不能保证
a)随着时间的推移,代码中没有错误。您是否确保每个代码中的每个功能都经过测试?你有没有运行每一个查询?即使是微软和IBM,他们拥有自己的源代码,庞大的测试人员团队,他们的软件仍然存在漏洞。是什么让你认为你可以保证代码中没有错误?
b)更多用户使用的软件确实有更少的错误。这是beta测试背后的想法。但是,拥有庞大的用户群甚至更好。因此,他们关于使用PostGres / etc的问题是有效的。
c)他们说KISS - 这也是一个有效的问题。你应该能够回答它。d)到底是什么东西 - 再次,你应该能够回答它。
软件就像正义一样 - 仅仅是为了可靠,还有必要被认为是可靠的。这是你工作的一部分。用户正试图管理他的风险。如果你不能回答这些问题,那他为什么要相信你的软件?
答案 3 :(得分:2)
天儿真好,
您是否已在CouchDB site
处将这个问题从CouchDB社区中撤回虽然我因为对Erlang的兴趣而成为潜伏者,但他们似乎非常活跃。
编辑:哦。我只是浏览了新的O'Reilly CouchDB书籍的粗略剪辑,并且有一个很好的章节,名为“Why CouchDB?”,其中有一些很好的信息。可能值得一读。
N.B。正如奥莱利在他们的网站上所说:“这本书正在进行中。”所以如果有拼写错误或语法错误,请不要感到惊讶。 ( - :
HTH
答案 4 :(得分:1)
虽然肯定很难回答,但是如果我必须自己决定的话,我会问问自己我需要听到什么。哪些因素很重要(可靠性,性能,成本)以及哪些因素不重要?
我想每个人都在做我们所做的事情,迟早要面对的是后座程序员,更好地了解一切等等,但是人们不应该让微观管理和“假定的知识”改变基于事实的决定(喜欢你的测试)。
答案 5 :(得分:0)
1)1.0假设在接下来的几个月内被解决,以解决您正在运行的确切问题,而不会认为当前版本符合要求。
2)虽然map / reduce可能比SQL稍微复杂一些,但你可以在不同类型的数据集上进行更复杂的索引,而不需要在RDBMS中进行所有表关系废话。此外,这只是索引部分,将数据 提供给CouchDB也不容易,将其输入JSON,通过HTTP推送,完成!
我大多数时候“说服”人们使用CouchDB我只是向他们展示了我们需要做的事情,这对RDBMS来说是不可行的。
对我来说最引人注目的事情仍然是将数据输入CouchDB是多么容易。在我们提出架构和调整ORM时,这并没有阻止我们的任何努力,所有这些,我们只是立即推送数据并在需要时添加索引,这是一个更高效的循环。
答案 6 :(得分:0)
我想我可以回答你的问题并为couchdb提供一些专业人士。
该版本仅表示计划进行大量工作直至版本1.0,而不是处于实验状态或不稳定状态。
它比其他ORDB更简单,通过HTTP进行通信,因此它不需要像所有其他Web应用程序方法那样的其他后端技术。这样可以节省时间和精力,并且在缩放,性能和可靠性方面具有很多优势。
Erlang是由motorola开发的一种新编程语言,用于解决当前编程语言(如C#,Java等)的容错等问题.Damien Katz在Erlang中构建Couchdb。
答案 7 :(得分:0)
如果有可靠的解决方案,我不会将我的业务委托给尚未进入生产阶段的产品,其长期可行性仍然存在疑问,以及了解该产品的程序员和相关语言可能相对较少,而且可用的支持资源相对较少。如果它的市场份额很小,我甚至不会将我的业务委托给一个成熟的产品。我曾经是一家公司的经理,该公司使用的是既定的,稳定的,优秀的产品,只有一小部分数据库市场;找到称职的程序员很困难。虽然产品的独特功能可能会产生一个具有显着降低的收购成本的应用程序,但是新成员在市场中的地位,或者即使该产品不是新手,在市场份额较小的位置,也会导致成本更高的应用程序从长远来看的所有权。无法找到人才也会阻碍那些试图快速响应变化或新需求的公司。当熟悉语言的程序员数量相对较少时,生成功能X所需的行数是不相关的度量。即使是一个稳定的平台,这些问题仍然存在。将快速发展的平台添加到风险组合中,选择这样的产品似乎是不谨慎的。但是我可能会认为它不是关键任务,也没有机会成为关键任务,假设我有实验预算和“R& D”。
答案 8 :(得分:-1)
为什么不采取另一个大致相同但更像mongodb进行测试的数据库?
额外的好处:它不在erlang中,所以当只使用1个核心机器时它已经很快了。 (显然erlang在16或32个核心之后开始闪耀)