基于SQL的关系型数据库在过去几十年来一直是组织应用数据存储的中流砥柱。针对关系型数据库的优化、监控和管理性能都有很成熟的经验,也有很多软件工具提供这方面的辅助功能。但是,NoSQL数据库的情况却非如此。
NoSQL技术现在仍然处于相对初级的阶段,众多NoSQL软件类型和产品服务令人眼花缭乱,选择合适的性能管理方案也成为一件颇具挑战性的事。目前,管理NoSQL性能仍然是新兴的技术问题,可能在未来一段时间都是如此。
软件开发和咨询服务公司ThoughtWorks公司的首席顾问Pramod Sadalage说:“人们早就知道如何优化关系型数据库系统,但是那种优化模式在NoSQL中尚不成熟。选择的优化模式与个体数据库密切相关。”
Sadalage和其它数据库专家们都认为,这意味着我们应该在项目开始的时候就为NoSQL性能打下坚实基础。他们说,IT经理、架构师和开发人员都应该评估NoSQL方案,谨慎选择,使用合适的数据库做特定的工作。
NoSQL数据库经常被描述为“量体裁衣”型的技术,要使用最适合具体应用的不同技术解决具体问题。要实现NoSQL落地有太多事情要处理。主要的NoSQL系统类型包括:键值存储、文档数据库、列簇存储和图数据库。
对于如何应用各种类型的NoSQL数据库,业界正在逐渐形成一些共识。列簇数据库一般应用于写入任务比较繁重的应用场景,场景应对数据库复制的短暂不一致性有一定容忍度。文档数据库可以应用在Web中,这种场景多使用JSON数据结构,灵活更新是重点关注的因素。键值数据库支持非常快速的数据访问,通过简单的键值就能获取到,还会使用缓存数据。图数据库适合处理数据元素之间的网络关系并以图的形式展示,例如业务流程管理或者社交网络信息。
尽管每种类型都有各种产品和开源技术对应,但用户需要分辨选择真正适合的类型。对于采用MongoDB还是Cassandra会有一些分歧,不过这也在情理之中,NoSQL应用需求没有放之四海而皆准的答案。
明智地使用NoSQL数据库
Mullins咨询公司的总裁和首席咨询顾问Craig Mullins说:“人们习惯使用关系型数据库,这种数据库可以应用于绝大多数场景。不过,选择NoSQL最好有具体的案例,要确保选择的NoSQL数据库是专为提供该场景必要的性能而设计的。”
Mullins说,要获得预期数据库性能,IT团队在部署某种NoSQL数据库产品之前“需要切实理解这些产品的工作机制”。他指出,Cassandra列数据库就是应用要适应NoSQL环境相关处理性能的一个例子。
Mullins说:“Cassandra设计是按行(记录)存储所有信息的。同样的场景,在关系型数据库的世界里可能需要用十几个表。但是在Cassandra数据库中都存储在一条记录中了。”如果需要访问某一条记录的所有数据,这种方案会获得极好的性能,Mullins以客户信用评级应用为例进行了说明。不过,他还说业务用户可能还有别的需求,例如统计所有客户信息。在这种需求面前,一条记录存储所有信息的方法就可能会给性能带来问题。
此外,SQL数据库中标准应用程序元素通常需要硬编码到NoSQL系统中。Athena IT解决方案咨询公司创始人Rick Sherman说:“使用NoSQL想要获得良好性能,需要做很多耗时的工作。这些工作量超过了一些人对它的预期。需要编写很多定制代码来实现任务。”
在许多情况下,这些工作是应用程序开发人员完成的,他们可能没有完全理解他们所使用NoSQL数据库内部的运行机制。Mullins说:“开发人员不是数据库设计者,他们是基于项目需求做设计,而不是考虑通用数据使用设计。”
NoSQL技能非标准问题
即使是数据库管理员,NoSQL技能不足的局限也会成为数据管理团队面临的问题,这个问题会影响应用程序任务获得更好的NoSQL性能。丰富的NoSQL技术方案并不能立即转换为相应同样丰富的资源。Sadalage说:“你很容易能找到具有15年经验的Oracle DBA人员,但是想找到同样经验的Cassandra数据库管理员则是不可能的,该数据库诞生才只有八年。”
NoSQL采纳的第一推动力应该是业务应用程序,不过也有更多的关注集中在处理分析方面。耶稣基督末世圣徒教会首席企业信息架构师Mike Bowers认为,如果你有分析和报表需求,那么要使用NoSQL数据库获得速度优势可能就会变得更加困难。
Bowers认为,部署的第一步是研究可用方案并了解方案的工作原理,在这一步我们要重点考虑如何获得良好的NoSQL性能。他说:“大多数NoSQL数据库不是真正的数据库,他们只是支持开发人员构建自己定制数据库的数据引擎,需要专门针对具体应用进行优化。”
Sadalage表达了更加鞭辟入里的观点,在当前乃至外来可能都是成立的。他说:“要因地制宜,物尽其用。不要选择错误的产品,然后抱怨产品不好。”
本文转自d1net(转载)