首页 > 酒水分类 > 红酒

数据库是软件系统吗,数据库设计

酒易淘 红酒 2022-09-09 13:06:18

品牌名称:酱香白酒加盟 所属行业:酒水 > 白酒

基本投资:10~50万元 投资热度:

加盟意向:1634 门店数量:534家

索要资料 查看详情

  

  “数据库”这个词会在5到10年内逐渐演变成“分布式计算平台”吗?   

  

  随着无服务器市场的扩大,更多的数据库解决方案开始考虑模块化架构,其中系统的所有组件都是分离的。这允许为每个无服务器租户分配一个此类组件的实例,从而在用户之间提供一个清晰的分隔。这种数据库分解和模块化的解决方案也使其部分可被非数据库应用程序重用。   

  

  数据库=分布式系统?的框架   

  

  分布式数据库通常具有以下组件:   

  

  分布式存储:这个组件有一个键值存储接口:Get(key)和Set(key,value),其中key和值是一些二进制字符串。这个组件对数据一无所知――它可以是表中的一行、JSON文档或其他东西。通常,该组件提供“持久性”保证,这意味着在某些故障情况下数据不会丢失。这种情况的一个常见例子是“不到一半的服务器停机”。节点之间的通信:该组件实现了一个通信协议,从一个节点向另一个节点发送和接收消息。计算这个组件对用户的查询执行结果:比如SQL请求的一组行。   

  

  在经典数据库中(如PostreSQL),所有这些组件都在一个应用程序中实现。这种应用程序自行管理一切:控制存储、与集群中的其他节点通信以及计算SQL查询的结果。   

  

  在MapReduce系统(如Hadoop)和其他数据库(如Google BigQuery)中,各种数据库组件在物理上是分离的。一些群集节点专用于存储。其他节点仅用于计算SQL查询的结果。如果SQL查询需要一些数据,会通过网络从存储节点传输到计算节点。   

  

  分布式系统的特点   

  

  现在假设我们要创建一个新的分布式系统——一个监控各种指标的服务(比如普罗米修斯)。根据系统的具体要求,我们可能需要以下内容:   

  

  具有“持久性”保证的分布式存储。我们需要在某个地方存储用户的指标,我们不希望由于数据中心停机而丢失有价值的数据。节点间的通信监控系统可以部署在多个数据中心,以减少延迟,提高容错能力。我们系统的各种实例需要相互协调。首先,我们的系统必须接受存储新指标的请求。其次,应响应读取时间序列数据和生成监控图表报告的请求。   

  

  编写每个组件都是一项艰巨的任务。我们不仅需要写代码和测试,还需要在生产中加强系统。后者通常会导致意想不到的错误和低效的设计。   

  

  现在让我们回到数据库。他们拥有我们构建分布式系统所需的所有组件。这些组件已经过数千种不同工作负载的实施、测试和增强。更重要的是,这些组件中的每一个都可以从数据库中分离出来,单独使用。   

  

  这基本上意味着数据库可以用作构建新的分布式系统的框架。   

  

  案例1:YDB   

  

  YDB是Yandex开发的分布式数据库。它提供了水平扩展性和强大的一致性保证。   

  

  在引擎盖下,YDB使用了演员模型,这是一个并发单元,可以:   

  

  接收来自其他参与者的消息,并向其他参与者发送消息以启动新的参与者。   

  

  Actor始终是单线程的,只能改变其内部状态。Actor没有共享状态的概念,这意味着所有的同步都是通过消息传递完成的。一方面,代码中不再有互斥体。另一方面,你不能把它写在内存里让其他演员看。   

  

  YDB对演员有一个特殊的称呼——平板。它是YDB的基石。SQL查询的执行、事务的协调、平板电脑的创建——这些任务都是由一个或多个平板电脑执行的。在本文的术语中,平板电脑是一种计算模型。   

  

  作为一个演员,平板电脑需要发送和接收信息。在YDB,为此建立了一个特殊的系统,称为互联。每个平板电脑都有一个ID,平板电脑可以用这个ID作为自己的地址互相发送消息。互连是集群节点之间的通信系统。   

  

  最后,平板电脑需要在某个地方存储它们状态。例如,表示SQL表片的平板需要存储分配给它们的表行的范围。YDB有一个分布式存储,可以存储任意二进制blob,并有一个“持久性”保证。   

  

  所有这些组件使YDB不仅是一个数据库,而且是一个通用的分布式计算平台。分布式系统的开发人员可以通过创建新的平板电脑来编写自己的应用程序逻辑,并为自己的目的重用系统的其他部分。   

  

  免责声明:YDB被宣传为数据库解决方案。没有公开的文档说明如何将其用作分布式系统平台。   

  

  案例2:Tarantool   

  

  Tarantool是一个用Lua编写的分布式系统应用服务器。Tarantool中启动的Lua应用程序可以通过API访问以下组件:   

  

  分布式事务数据库。数据库支持两种操作模式——内存和提交到磁盘。第二种模式在本文中将这个组件称为分布式存储。通信协议称为SWIM。它允许在群集节点之间发送。   

送和接收消息。
由于应用服务器本身制作了计算模型,因此我们拥有将 Tarantool 称为通用分布式计算平台所需的所有组件。
这听起来并不令人印象深刻。看起来 Tarantool 最初是为了成为这样一个平台而创建的,所以它符合所有标准也就不足为奇了。问题是,Tarantool 最初是作为一个数据库创建的,然后迅速发展成为一个成熟的计算平台。仅用了 2-3 年的时间这一事实非常出色,但它也显示了数据库解决方案如何演变为构建分布式系统的“框架”。

  

原文:https://www.jdon.com/60889

免费咨询
免费获取加盟资料