选择高性能NoSQL数据库的5个步骤
来源:Redislabs
作者:Shabih Syed
翻译:Kevin (公众号:中间件小哥)
构建在线和运营应用程序的开发团队越来越多地选择一类新的数据库来支持它们。它被称为“NoSQL”或“Not Only SQL”,包括Redis,MongoDB等非SQL数据库。从可用的NoSQL解决方案中选择正确的数据库,是您在设计新应用程序时可以做出的最重要决策之一。因此,如果您正在评估NoSQL数据库,请继续阅读,下面的建议将有助于您的选择。
选择数据库时,您可以遵循以下五个高级步骤:
- 定义NoSQL数据库的目标。
- 确定吞吐量和延迟要求。
- 为项目选择正确的数据库。
- 选择 托管服务提供商或自己动手(DIY)之间做出选择。
- 确定 适合您情况的最佳部署模式。
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个步骤的更多相关文章
- dotnet core 使用 MongoDB 进行高性能Nosql数据库操作
好久没有写过Blog, 每天看着开源的Java社区流口水, 心里满不是滋味. 终于等到了今年六月份 dotnet core 的正式发布, 看着dotnet 社区也一步一步走向繁荣, 一片蒸蒸日上的大好 ...
- 选择 NoSQL 数据库需要考虑的 10 个问题
那么我为什么要写这篇文章呢? 是因为我认为NoSQL解决方案不如RDBMS解决方案吗?当然不! 是因为我专注于SQL的做事方式,而不想陷入一种相对较新的技术的不确定性吗?不,也不是!事实上,我非常兴奋 ...
- NoSQL数据库介绍
NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...
- 高性能nosql ledisdb设计与实现(1)
ledisdb是一个用go实现的基于leveldb的高性能nosql数据库,它提供多种数据结构的支持,网络交互协议参考redis,你可以很方便的将其作为redis的替代品,用来存储大于内存容量的数据( ...
- 关系数据库&&NoSQL数据库
在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库. ...
- 关系数据库&&NoSQL数据库
在过去,我们只需要学习和使用一种数据库技术,就能做几乎所有的数据库应用开发.因为成熟稳定的关系数据库产品并不是很多,而供你选择的免费版本就更加少了,所以互联网领域基本上都选择了免费的MySQL数据库. ...
- 发布一个参考ssdb,使用go类似的实现redis高性能nosql:ledisdb
起因 ledisdb是一个參考ssdb.採用go实现,底层基于leveldb,相似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持. 我们如今的应用极大的依 ...
- 发布一个参考ssdb,用go实现的类似redis的高性能nosql:ledisdb
起因 ledisdb是一个参考ssdb,采用go实现,底层基于leveldb,类似redis的高性能nosql数据库,提供了kv,list,hash以及zset数据结构的支持. 我们现在的应用极大的依 ...
- Amazon DynamoDB, 面向互联网应用的高性能、可扩展的NoSQL数据库
DynamoDB是一款全面托管的NoSQL数据库服务.客户能够很easy地使用DynamoDB的服务.同一时候享受到高性能,海量扩展性和数据的持久性保护. DynamoDB数据库是Amazon在201 ...
随机推荐
- Winform中实现读取xml配置文件并动态配置ZedGraph的RadioGroup的选项
场景 Winform中对ZedGraph的RadioGroup进行数据源绑定,即通过代码添加选项: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/ ...
- thymeleaf+layui加载页面渲染时TemplateProcessingException: Could not parse as expression
Caused by: org.attoparser.ParseException: Could not parse as expression: " {type: 'numbers'}, { ...
- ubuntu16.4 环境移植ubuntu到zynqMp_zcu102
安装petalinux 下载petalinux https://www.xilinx.com/support/download 下载 zcu102 ZCU102 BSP 安装petaLinux 把sh ...
- web性能优化实践
一.SQL查询优化 1.循环中有多次查询sql,改为在循环外一次查询后再处理 2.循环多次插入,改为组装好数据后批量插入 3.梳理业务逻辑能一次查完的,绝不分多次查 4.索引用起来 5.分页查询 二. ...
- SpringAop实现公共字段填充
一.说明 项目中经常会有一些放在缓存中的公共字段需要进行填充,我们知道mybatis-plus很方便地可以实现公共字段填充.在这里我定义了一个字段填充的注解,当我们需要进行数据填充的时候只要在方法上打 ...
- centos php7 安装mysqli扩展心得
在新配服务器时发现,php无法连接到mysql.通过phpinfo发现.根本没有显示mysqli的相关配置.经过一系列研究.总结了下.: 第一步: 在phpinfo里没有mysqli配置,原因是安装p ...
- 为什么使用B+Tree索引?
什么是索引? 索引是一种数据结构,具体表现在查找算法上. 索引目的 提高查询效率 [类比字典和借书] 如果要查"mysql"这个单词,我们肯定需要定位到m字母,然后从下往下找到y字 ...
- Day 23 系统服务之救援模式
1.CentOS6与Centos 7启动流程 4.运行级别C6&C7 0 关机 1 单用户模式 (超级权限 必须面对实体硬件) 2 暂未使用 3 字符界面(黑框) 4 暂未使用 5 图形界面 ...
- MOOC C++笔记(四):运算符重载
第四周:运算符重载 基本概念 运算符重载,就是对已有的运算符(C++中预定义的运算符)赋予多重的含义,使同一运算符作用于不同类型的数据时导致不同类型的行为. 运算符重载的目的是:扩展C++中提供的运算 ...
- 导出 mysql 数据到 redis
决定你要导入到 redis 的数据类型 假设我的表 t_user 的结构为 列名 注释 类型 name 名称 varchar idcard 身份证号 varchar phone 手机号 varchar ...