Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践
你的微办事架构须要多种数据模型。你是应钙揭捉?择混淆持久化呢照样多模型数据库?

跟着开辟人员开端创建可扩大的Web应用,汗青上在数据架构上占主导地位的关系型数据库,开端显示出很大年夜的压力。我们开辟了异常风行的社交应用,并开端将越来越多的设备连接到物联网(IoT)。用户大年夜量的攫取和写入数据导致了必惺攀扩大数据层,大年夜而出现了新型的数据库来知足这些高可扩大性需求。
下面是它能实现的功能:
在很多情况下,这些新的数据库“NoSQL”或“非关系”的解决筹划,所基于的数据模型和传统的关系数据库模型不合。NoSQL数据库包含有文档型、键值对型(key-value)、列式数据库甚至图数据库。平日来说,这些数据库就义了一些关系数据库的常见的的特点,如强一致性、ACID事务特点和join连接。
与此同时,和数据库技巧的变革一样,在本世纪初的SOA(面向办事的架构),正逐渐演变魏微办事架构的体系架构,很多企业也开端逐渐摈弃重量级的SOA体系架构如企业办事总线(ESB),并偏向应用“去中间化”的架构办法。微办事架构的魅力在于其开辟、治理和扩大办事都是相对自力的。这给了我们很多在实施方面的灵活性,包含基本架构技巧,如数据库。
举个例子,我们假设正在为微办事架构做开辟工作,并等待着大年夜范围的可扩大性的需求。无论这个项目是一个新的应用照样对现有应用的重构,我们都有机会针对数据库做出新的选择。
在选择多模型数据库时要推敲的一个问题是若何支撑各类模型。一种常见的办法,是基于单一的原生的基本模型的数据库引擎,而其他模型都是构建在其之上。分层数据模型更能展示底层根本模型的特点。
微办事架构风格的一个关键的好处,是持久性的封装。我们可以根据每个办事的须要,去选择不合的持久化技巧。根据每种数据类型的特点而去选择数据存储的办法,被称为混淆持久化,这一术语起先是由Martin Fowler等人推广起来的。混淆持久化和微办事架构可谓是天作之合。
下图中,展示了一系列的微办事,以及我们若何为每个办事选择不合的数据模式。我不想在本文中,为每种类型的数据库去选择合适的用例。我的意图是要凸起各类型数据库的优势,以及为什么混淆持久化的办法是值得称道的.

个中,开辟办事A的团队,因为该办事是基于大年夜范围数据治理的核心应用,可能应用如Apache Cassandra如许的表格模型数据库。例如,一个零售应用库存应用,可能很合适应用Apache Cassandra。Cassandra供给了一系列调和机制对象,如可调一致,批处理和轻量级的事务机制,可以作为完全ACID事务机制的替代。
办事B支撑用众所周知的关键字查找值的方法,例如针对产品目次的描述性数据。对于键值存储模型来说,这是一个很好的例子,在这里,我们经由过程一个众所周知的键值(如产品ID)查找一系列的数据。很多内存缓存都应用键值对数据模式去支撑大年夜范围的快速攫取。
办事C可能重要存眷半构造化内容,例如Web站点的表单或页面,而文档存储可能异常合适该类型数据。文档存储与键值存储有很多类似之处,然则一个关键的差别是文档型数据支撑数据上增长构造,例如对特定属性进行索引以支撑快速检索。
在本文中,我们将商量若何为根据应用法度榜样去选择核实的数据库模式。(是的,可以有一个以上的选择!),我们也会看看对数据模式的选择可以赞助肯定在数据层中将选用哪些技巧。
办事D可能涉及数据之间的复杂关系导航,例如客户数据和与组织中各部分的客户接洽汗青数据。这可能涉及其他办事所拥有的数据类型之间的关系。这是一个有趣的案例,因为它开端与膳绫擎提到的办事有各自的数据类型的束缚相反。在这种情况下,你可以选择为你的办事创建一个具有对调层表的只读拜访的图,然后经由过程这个“前门”处理所有的变更——即经由过程这个“前门”去调用那些“拥有”这些数据类型的其他办事的API。
最后,我们可能还有一个应用关系数据库技巧的遗留体系或办事,或者我们有一个办事来治理那些数据量较少,或者不经常变革的数据。关系数据库可能完全合适于这些场景。
单个办事是否应当应用混淆持久化?
也有可能的是,我们可以设计一个办事,这个办事须要多种数据库支撑。例如,我们可以创建一个应用键值存储模式作为索引的酒店办事,在酒店名称和ID之间实现映射,而存将关于酒店的描述性数据存储在Cassandra中。

留意,名称映射到ID可以在Cassandra中采取规范化的设计办法去实现,个一一个零丁表去保护名称至ID的映射关系。这应用了更多的存储空间,但降低了治理零丁键值存储的操作复杂性。
这是我推荐的做法- 针对某个微办事,只要可行,就应当保持应用单一数据模型(数据库)。如不雅你发明一种情况,认为单个办事须要两个不合数据库支撑,那么请推敲该办事的粒度是否可能变得太大年夜。你可能须要推敲将该办事拆分为较小的办事。
混淆持久化局限性的衡量
混淆持久化的重要缺点在于支撑多种技巧的成本,无论是在最初的开辟阶段和将来的运营方面。
重要的开辟成本,是在须要培训每个开辟人员去控制每个新的数据库技巧。这是异常重要的,尤其是在开辟人员频繁流动团队中。
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 在这份通知布告中,“乐视云”三钢髦极为惹人注目,大年夜不久前吴亚洲(乐视云前CEO,11月15正>>>详细阅读
本文标题:如何为微服务选择数据库
地址:http://www.17bianji.com/lsqh/39038.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示