选择高性能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 ...
随机推荐
- 【Offer】[29] 【顺时针打印矩阵】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下矩阵:  则依次打印出数字1,2,3,4,8,12, ...
- Go 语言基础——变量常量的定义
go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换 go语言不支持隐式转换 变量 变量声明 var v1 int var v2 string var v3 [10]int // 数组 v ...
- 每天学会一点点(HashMap实现原理及源码分析)
HashMap实现原理及源码分析 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希 ...
- Invalid bound statement(not found):cn.e3mall.mapper.TbItemMapper.selectByExample.....
1.出现如下问题: 说明mapper接口和mapper.xml映射文件没有在一个文件夹下面 2.解决方法: 在dao层的pom.xml中配置一下: <!-- 如果不添加此节点mybatis的ma ...
- PythonI/O进阶学习笔记_4.自定义序列类(序列基类继承关系/可切片对象/推导式)
前言: 本文代码基于python3 Content: 1.python中的序列类分类 2. python序列中abc基类继承关系 3. 由list的extend等方法来看序列类的一些特定方法 4. l ...
- 网络基础 ----------- 电脑作为wifi站点
在上大学的时候最难受的就是,没有无线,但是电脑有宽带,那么怎么将电脑变成路由器哪 1.首先查看你的无线网卡是否支持开无线 通过命令win + R 快捷件进入命令窗口输入 : . netsh wlan ...
- TestNG(十五)xml文件实现多线程测试
package com.course.testng.thread; import org.testng.annotations.Test; public class ThreadOnXml { @Te ...
- java处理emoji(转)
最近对接ios.安卓客户端,需要处理emoji等表情符号,网上总结: 1.过滤掉emoji表情符 2.修改数据库的编码格式等,让其支持存储emoji 以下分别对两种方案进行描述: 第一种:过滤掉emo ...
- Java中的方法和方法重载
上次我们讲了Java中的一些基本的语法;今天我们就讲一点内容,来说说Java中的方法和方法重载以及需要注意的一些地方; 方法: Java的方法类似与其他语言的函数,是一段用来完成特定功能的代码片段, ...
- 使用 Fabric 自动化部署 Django 项目
作者:HelloGitHub-追梦人物 文中涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在上一篇教程中,我们通过手工方式将代码部署到了服务器.整个过程涉及到十几条命令,输了 ...