首页 > 基础设施 > 正文

一文读懂什么是无服务器数据库(优点和缺点)

2018-05-30 11:02:04  来源: 云技术实践

摘要:阅读本文你可以了解到多个知名的“无服务器”数据库产品以及它们的优缺点。
关键词: 数据库
  阅读本文你可以了解到多个知名的“无服务器”数据库产品以及它们的优缺点。
 
\
 
  初识无服务器架构
 
  无服务器架构是云计算的一种运行模型,其含义是由云服务商动态地管理计算资源的分布。我们宝贵的计算资源的消费者本质上讲是函数执行。如果你用基于函数运行所消耗的内存和执行时间(四舍五入到100ms为单位)来计费,AWS和Azure会带来极大的成本开销。AWS Lambda当前的价格是$0.00001667/GB-秒,而Azure function是$0.000016/GB-秒。了解这些数据之后你就可以预估成本上升的的速度。因为分配的内存量是可以在128MB-1.5GB之间可配置的,函数执行的具体花费会根据你配置的不同而不同。每100ms执行时间的开销其最大配置可能是基本配置(128MB)的12倍多。
 
  无服务器计算(serverless)仍然是需要服务器的,这也是无服务器数据库的切入点。先了解自身的需求无疑会让你更加容易地选择合适的数据库服务,也更加容易地使用当今最先进的技术方案。
 
  各种无服务器数据库
 
  市面上已经有了多个知名的数据库服务,比如Azure Data Lake。(Azure是微软的公有云服务)
 
  Google Cloud Store
 
  **Google Cloud Store**是一个面向文档的数据库方案,作为一个独立服务给Google App Engine提供数据库组件。Google还提供有一个Firebase服务,这项服务提供给客户两种支付方式:固定付费或者按量付费。而且Firebase也包含有一个层次化的数据库。
 
  FaunaDB
 
  **FaunaDB**是全球分布式的最大的事务性数据库服务。它的技术是基于twitter。
 
  Amazon Aurora Serverless
 
  Amazon Aurora Serverless 在2017年的最后一个季度发布了技术预览版。它有两个不同版本分别与MySQL和PostgreSQL兼容,但是它也与其他的知名数据库系统兼容,比如MariaDB, Oracle等。 Amazon Aurora serverless database是完全云端管理并可以自动扩展到64T的数据库存储。
 
  DynamoDB
 
  Amazon还提供了另一个服务,DynamoDB, 是一个完全云端管理的数据库服务。它可以提供可预测的高速的性能且支持无缝扩展。使用DynamoDB创建数据库和表的操作变得相当简单直接,你可以存储和查询任意数量的数据,并且DynamoDB也能服务于任意量级的请求流量。
 
  MongoDB
 
  MongoDB虽然不是一个无服务器数据库,但是我们还是要提一下,因为它也有一个数据库即服务(Database as a Service)的产品,名字叫MongoDB Atlas。MongoDB是免费开源的,发行许可证是GNU Affero General Public License。MongoDB在存储数据(JSON这样的文档数据)方面非常灵活,这样它每个文档的列都是不同的,而且数据结构也会随时间而变化。
 
  我继续回来说MongoDB Atlas,它是一个DBaaS工具。它有很多特别强大的功能,比如自动化运维,你可以在几分钟内创建和部署集群并且保证你的集群宕机时间为0。它也提供基于角色的访问控制来对你的数据做保护。同时支持加密和网络隔离,当然还有认证服务。
 
  MongoDB Atlas的另一个强大功能是它简化了垂直扩展和水平扩展操作,支持一键触发。你也可以跨多个区region来部署集群来提供更好的读性能和数据保证。这些集群是地理上分布式的,支持自愈,并且有优秀的容错性。MongoDB Atlas的持续性备份提供了基于时间点恢复和快照(可查询)的能力。搜索任何细节都十分轻松而且查看的性能是实时的。你可以自定义报警,优化的面板会突出显示关键的历史度量值。
 
  使用服务器数据库的优势
 
  成本效率
 
  采购一定数量的服务器会在很长时间内资源得不到充分利用,算起来比使用无服务器数据库更昂贵。除了省钱之外,部署一套自动扩展组也会跟有效率,因为对计算机资源的装箱优化更加高效。最直接的成本优势包括没有操作系统的成本(许可证,安装,维护,支持,修复补丁)。通常的描述会被理解为一种按使用量付费的计算模式,因为你只会为你代码执行时所使用的内存和时间付费。
 
  运维,可扩展性和产出
 
  无服务器架构意味着开发人员和运维人员不用再搭建环境,调优自动化扩展策略或者系统而节省时间。是云服务提供商为我们根据需求来无缝地扩展容量。小的开发者团队可以独立的运行代码,而不需要另外找基础设施的运维支持团队。更多的开发人员会掌握DevOps,这样一个传统的软件工程师与一个DevOps工程师现在也没啥区别了。
 
  无服务器数据库的缺点
 
  性能和资源限制
 
  采用无服务器的数据库常常会导致数据库遭受比传统的独立数据库多得多的响应延迟,这里传统数据库是表示一个专用数据库服务器,或者虚拟机,或者容器。这背后的原因是如果你的无服务器数据库没被使用的话,云服务提供商会把库给“停掉”,这样如果此时程序运行时需要一定的时间来启动的话,这会带来非常多的延时。无服务器计算对类似于高性能计算这样的负载是不合适的。这个限制的原因一方面来自于云服务提供商,他们对资源使用做了限制;另一个原因是,你在某个特定的时期按照实际需求来批量部署服务器可能更加的划算。
 
  监控和调试
 
  相比传统的数据库结构,诊断无服务器架构下的性能问题或者资源超量使用问题变得异常的困难。尽管完整的函数可以被计时,但是我们没办法对它使用探针,调试器或者其他AMP工具下钻得到更多细节。我们必须清楚无服务器架构的运行环境通常不是开源的,这也意味着我们很难在本地环境来精确的复现其性能。幸运的是,市面上已经有一些不错的无服务器监控工具供你使用了。
 
  安全
 
  无服务器数据库有时会被错误地认为比传统服务器更加安全。在某个程度上是对的,因为云服务提供商会负责OS级别的漏洞。但是攻击量也会高一些因为对比传统的架构他们用的组件要多得多,每个元素都是无服务器应用的一个入口。客户用来保护他们云端负载的安全手段就变得不那么重要了因为他们在endpoint和网络层(比如IDS/IPS的控制和部署)上不能做任何事。

第三十四届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:pingxiaoli

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。