请选择 进入手机版 | 继续访问电脑版

设为首页 收藏本站
思科社区 关注
思科社区

  思科 CCO 登录
 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 邮件服务器
查看: 346|回复: 1

【小目标,一个“译”】+ 如何为您的微服务选择数据库(2)

[复制链接]
发表于 2018-8-28 17:20:28 | 显示全部楼层 |阅读模式
混合持久化的限制与利弊

混合持久化的主要劣势是:在最初化开发和运营方面,需要支持多种技术的成本。

开发的成本主要来自于培训各个开发人员熟悉每种新的数据库技术的成本。如果您的开发团队流动性较大的话,这种劣势会更加明显。

而另一个弊端是支持多个数据库的运营成本。如果数据库的管理是集中化的,并且整体团队必须对多种技术保持较高的维护水平时,这就可能会出现问题。但是当开发团队仅支持他们已选定的生产环境所用到的数据库,从而形成了真正的devops运作模式时,该问题会得到适当的缓解。

多模型数据库

数据库提供商已经开始着手打造与提升一些多模型的数据库,作为混合持久化方法的一种替代或补充了。术语“模型”是指由诸如表格(包括关系和非关系型)、列存储、键-值、文档或图表之类的数据存储所提供的抽象模型。我们可以理解为:多模型应用使用的是一种类型以上的数据存储,而多模型数据库则能够支持多种抽象。

DataStax EnterpriseDSE)是一个多模型数据库的例子,其核心使用一种建立在顶端图表的抽象(DSE图表),来支持Cassandra分区的行存储(表格)模式。如下图所示,在此核心模型上创建您自己的键-值和各种文档类型的抽象是非常简单的。通过这种方式,我们可以修改上述的混合方法,利用单一的底层数据库引擎来提供我们的所有服务。与此同时,我们还可以使用单独的Cassandra键值空间,来维持那些由不同服务所拥有的数据之间的清晰界限。



我们下面来看看它是如何工作的:

表格:服务A之类的主要应用服务可以使用Cassandra的查询语言(CQL),来与DSE数据库直接进行交互。

-值:虽然ApacheDataStaxCassandra版本都无法提供了一个明确的键-API,但是像服务B之类的服务却能够通过设计来限制表格只与Cassandra互动实现键-值的存储。例如:

CREATE TABLE hotel.hotels (

key uuid PRIMARYKEY,

value text); // orif you prefer, “blob”

文件:通过各种JSON文件,Cassandra能够支持文档类型的交互,这可以被用于服务C之类的服务。注意:因为Cassandra的确需要有表的schema模式,因此您不能插入任意的JSON来随便定义新的列,也就是说通常需要具有与文档数据库相关联的特性。

图表:对于像服务D之类高度支持数据互连的服务来说,DSE图表是一个高度可扩展的图表数据库,它直接建立在DSE数据库之上。DSE图表通过Apache TinkerPop 项目来支持强大的、且易于表现的Gremlin API

多模型数据库的优势和局限性

在考虑是否要使用多模型数据库的时候(或使用你已有数据库的多模型功能时),你需要兼顾考虑我们上述所讨论的有关混合持久化方法所带来的开发和运营成本。

使用多模型数据库可以简化运营。无论是不同的开发团队使用不同的API,还是不同的后端数据库平台交互模式,我们都会从只需要管理单一的平台来受益。

在选择多模型数据库时,需要考虑的一个方面就是:各种模型如何能够被支持。一种常用的处理方式是:一个基于单一本地的底层模型与其上面分层的其他模型共同组成一个数据库引擎。分层的数据模型用于展示其底层主模型的各种特征。

例如,在ThoughtWorks的技术雷达第16卷(TechnologyRadar Vol. 16)(https://assets.thoughtworks.com/assets/technology-radar-vol-16-en.pdf)中,就讨论展示了在Cassandra顶端分层的DSE图表模型的特性和所涉及的取舍:

我们所长期钟爱和使用的Neo4j(译者注:Neo4j是一种高性能的NOSQL类型图表数据库,它将结构化数据存储在网络中而不是本地表里。)已经在大型的数据集类型中逐渐显露出了局限性,而建立在Cassandra顶端的DSE图表则应运而生。当然,这种模式也有其自己的取舍,例如:您会失去ACID事务和Neo4j的独立于架构运行(run-time schema-free)特性;但是DSE通过访问底层的Cassandra各种表格,Spark对分析负载的集成,以及强大的TinkerPop/Gremlin查询语言,都使得它还是很值得考虑和选择的。

如果您在自己的web架构应用中考虑使用不同的数据类型,那么您可能就会发现到:不同的数据类型有着不同的一致性需求,而实际需要立即进行一致化的数据类型并不多。

另一个需要重点考虑的是:多模型的空间问题,即不同数据库模型和引发的集成与交互,以及访问数据的各种操作和分析用例。DSE支持通过SparkDSE分析)来访问图表数据以实现其分析的目的,而DSE搜索则提供了用于创建那些存储在DSE数据库中数据的各种搜索索引的能力。

微服务数据模型的四步骤

既然我们已经了解了混合与多模型方法的各类优点,那么我们应该如何为大规模的微服务应用来选定数据模型呢?请参考下列的步骤:

1. 识别应用程序中的主要数据类型,逐个创建服务,并控制每个服务的持久性。如果可能的话,将多模型的数据库运用到所有服务上,使服务能根据它们所选择交互的数据来改变模式。

2. 根据您网页级的延展性和可用性,键-值的分层和文档的语义,按需使用一种表格的形式(如:DSE数据库)来作为您的主要模型。请务必考虑到各种方式,来保证您的数据能够被各种操作和分析用例所访问到。这样您就可以提前规划好那些如何使用查找索引,以及向分析数据中心进行复制等方面的功能。

3. 使用高度相关的数据图表形式(如DSE图表),特别是在各个实体之间的关系有着比其实体本身更多属性的时候,或是您需要在同一个实体间获取的多重关系的时候。

4. 当您没有必要改变的时候,请保留传统的关系型/SQL技术的架构。例如,当您的用例并不需要大规模、低延迟和高可用性的时候。

我希望上述内容能够为您在思考如何以为自己的应用程序提供多模型支持,以及何时、何处用到多模型数据库的时候提供一个实用的框架。




  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分5 (1 评价)
发表于 2018-8-31 11:27:33 | 显示全部楼层
感谢版主分享~
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
平均得分0 (0 评价)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver | 思科社区  

GMT+8, 2018-9-24 06:46 , Processed in 0.078410 second(s), 32 queries .

京ICP备09041801号-187

版权所有 :copyright:1992-2019 思科系统  重要声明 | 保密声明 | 隐私权政策 | 商标 |

快速回复 返回顶部 返回列表