来源:Redislabs
作者:Shabih Syed

翻译:Kevin (公众号:中间件小哥)

构建在线和运营应用程序的开发团队越来越多地选择一类新的数据库来支持它们。它被称为“NoSQL”或“Not Only SQL”,包括Redis,MongoDB等非SQL数据库。从可用的NoSQL解决方案中选择正确的数据库,是您在设计新应用程序时可以做出的最重要决策之一。因此,如果您正在评估NoSQL数据库,请继续阅读,下面的建议将有助于您的选择。

选择数据库时,您可以遵循以下五个高级步骤:

  1. 定义NoSQL数据库的目标。
  2. 确定吞吐量和延迟要求。
  3. 为项目选择正确的数据库。
  4. 选择 托管服务提供商或自己动手(DIY)之间做出选择。
  5. 确定 适合您情况的最佳部署模式。

1 定义数据库的目标

使用NoSQL数据库的目的可能是:为移动设备上的数以千计的用户提供个性化的数字体验;为处理后端支付的应用程序存储数据; 管理短暂的临时数据;或作为一个记录系统存储持久数据。您甚至可以在特定场景的同一数据管道中涉及多种类型的数据库。 不管你在哪种场景中使用,包括如何收集,提取有用的数据来进行分析和在数据管道中定义NoSQL数据库的特定功能都是非常重要的。

2 确定吞吐量和时延要求

在今天这个时代,用户期待即时体验。通常,这需要您的应用程序的响应时间<100毫秒。否则,它将被认为低效,这样您可能会失去用户的兴趣。但是,一些应用程序 - 例如游戏,通信和金融交易系统 - 要求其数据库的响应时间低至13毫秒。除时延外,您还需要确定吞吐量要求。例如,您的数据库可以同时处理数千个同步数据流,同时时延低至50毫秒或更短吗?了解对数据库的性能要求对于确保用户体验的质量是非常重要的。

3 为项目选择正确的数据库

通常,开发人员选择NoSQL数据库是因为它们需要半结构化或非结构化数据类型,这种存储结构具有灵活性,查询简单,快速的事务响应,可存储大量数据以及通过分布式计算和存储的快速且廉价的可扩展性。您可以通过CAP定理进一步缩小您的选择范围,该定理在维基百科上定义如下:

  • 一致性:所有节点访问同一份最新的数据副本。
  • 可用性:每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。
  • 分区容错性:即使由于网络问题节点之间有信息丢失或延迟,系统仍然保持继续运行。

根据CAP定理,您可以优先考虑CA,AP或CP。这有助于您确定哪个数据库最适合您的应用程序。

4 在托管服务提供商和自建(DIY)之间进行选择
托管服务解决方案有丰富的经验来处理数据库的日常管理操作。这使您能够专注于自己应用程序的创新,同时提高工作效率。如果您朝这个方向考虑,请选择能够在保证正常运行的情况下,同时可以达到您要求的吞吐量和时延要求的数据库服务提供商。当然,外包可能并非总是如此,在这种情况下,您应该考虑哪个数据库提供商提供的软件版本支持大规模配置,安排和管理容器。请务必检查您最期望的能力,例如可伸缩性,双活部署,吞吐量和时延 - 并在POC测试期间验证它们。

5 确定部署模式
理想情况下,您需要一个数据库提供者,它允许您在您选择的任何环境(无论是公共还是私有)中运行数据库,并完全控制您的数据和配置。您的数据库软件也应该可以作为Docker镜像进行使用,这将允许您的企业开发人员在基于Docker的微服务架构中使用它。如果您使用私有平台即服务(PaaS),请确保您的数据库提供商支持私有PaaS环境中的无缝扩展和轻松高可用性,例如Pivotal,Bluemix,Heroku等。如果选择托管服务提供商,请确认它们支持跨多云的群集部署(包括AWS,Azure和Google)。

正确选择NoSQL数据库的好处

经过深思熟虑的决策的一些优点包括:保证开发,测试和生产环境之间的连续性,缩短产品上市时间。与Docker编排工具集成的高可用性和易扩展性。更快的吞吐量,最小的延迟和保证正常运行时间全球多云部署操作使用托管服务提供商可节省大量成本。

更多优质中间件技术资讯/原创/翻译文章/资料/干货,请关注“中间件小哥”公众号!

选择高性能NoSQL数据库的5个步骤的更多相关文章

  1. dotnet core 使用 MongoDB 进行高性能Nosql数据库操作

    好久没有写过Blog, 每天看着开源的Java社区流口水, 心里满不是滋味. 终于等到了今年六月份 dotnet core 的正式发布, 看着dotnet 社区也一步一步走向繁荣, 一片蒸蒸日上的大好 ...

  2. 选择 NoSQL 数据库需要考虑的 10 个问题

    那么我为什么要写这篇文章呢? 是因为我认为NoSQL解决方案不如RDBMS解决方案吗?当然不! 是因为我专注于SQL的做事方式,而不想陷入一种相对较新的技术的不确定性吗?不,也不是!事实上,我非常兴奋 ...

  3. NoSQL数据库介绍

    NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...

  4. 高性能nosql ledisdb设计与实现(1)

    ledisdb是一个用go实现的基于leveldb的高性能nosql数据库,它提供多种数据结构的支持,网络交互协议参考redis,你可以很方便的将其作为redis的替代品,用来存储大于内存容量的数据( ...

  5. 关系数据库&amp;&amp;NoSQL数据库

    在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库. ...

  6. 关系数据库&&NoSQL数据库

    在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库. ...

  7. 发布一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb

    起因 ledisdb是一个參考ssdb.採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持. 我们如今的应用极大的依 ...

  8. 发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb

    起因 ledisdb是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持. 我们现在的应用极大的依 ...

  9. Amazon DynamoDB, 面向互联网应用的高性能、可扩展的NoSQL数据库

    DynamoDB是一款全面托管的NoSQL数据库服务.客户能够很easy地使用DynamoDB的服务.同一时候享受到高性能,海量扩展性和数据的持久性保护. DynamoDB数据库是Amazon在201 ...

随机推荐

  1. C#开发BIMFACE系列21 服务端API之获取模型数据6:获取单模型的楼层信息

    系列目录     [已更新最新开发文章,点击查看详细] 一个文件/模型中可能包含多个楼层信息,获取楼层信息对于前端页面的动态展示非常有帮助.本篇介绍获取一个文件/模型中可能包含多个楼层信息的详细方法. ...

  2. (六十)c#Winform自定义控件-鼓风机(工业)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  3. [DP]换钱的最小货币数

    题目一 给定数组arr,数组中有N个元素,其中所有的之都为整数且不重复.每个只代表一种面值的货币,每种面值的货币可以使用任意张,在给定一个整数aim代表要找的钱数,求组成aim的最少货币数. 解法 依 ...

  4. 分布式之分布式事务、分布式锁、接口幂等性、分布式session

    一.分布式session session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jsessionid cookie,就根据这个东西 ...

  5. Python函数编程——闭包和装饰器

    Python函数编程--闭包和装饰器 一.闭包 关于闭包,即函数定义和函数表达式位于另一个函数的函数体内(嵌套函数).而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量.参数.当其中一个 ...

  6. iptables的删除命令中的相关问题

    最近在做一个VPN中间件的配置工作,在配置iptables的时候,当用户想删除EIP(即释放当前连接),发现使用iptables的相关命令会提示错误. iptables: Bad rule (does ...

  7. 关闭同一网络内的windows主机

    声明这是技术讨论!切勿用来攻击别人,一切法律后果自负! 1. 在windows的cmd命令行下操作(如下操作都是以windows的机器在为主) net view #显示同一网络同所有主机 2. 打开远 ...

  8. 树、图、堆、STL(来自菜鸡的"炒鸡"干粮)

    树.图.堆.STL 图论基础 简单图: 没有自环,两个顶点之间最多只有一条边. 完全图: 一个简单图,每两个顶点之间都有一条边.一共有(n-1)*n/2条边. 二分图: 一个简单图,设G=(V,E)是 ...

  9. Anroid逆向学习从编写so到静动态调试分析arm的一次总结

    Anroid逆向学习从编写so到静动态调试分析arm的一次总结 一.前言 最近跟着教我兄弟学逆向这篇教程学习Android逆向,在第七课后作业反复折腾了好几天,正好在折腾的时候对前面的学习总结一波,动 ...

  10. 11 (OC)* CoreImage

    coreimage framework 组成 apple 已经帮我们把image的处理分类好,来看看它的结构: 主要分为三部分: 1)定义部分:CoreImage 何CoreImageDefines. ...