分布式存储里的文件存储和数据库存储有什么区别?
一、分布式存储里的文件存储和数据库存储的区别
首先你要区分使用方式不同,对于文件存储,往往调用的接口就是打开文件,读写文件和关闭文件。对于数据库,操作的对象就是表格,通过SQL语句实现表格的定义、插入删除和属性修改,所以数据库往往更加的灵活,也更加的复杂。分布式存储中,常见的接口一般就是文件、对象和表格等。这是从使用者角度来说。
我们再说一下存储的实现,我们可以通过文件存储的方式实现数据库存储的部分功能。为什么这么说呢,因为数据库存储不仅要存储数据,还要涉及到索引和事务的ACID。对于数据库中的数据,可以通过文件的形式保存,同时还要实现索引更新、事务保证等等,所以数据库存储更加的复杂。
那我们最后说说分布式的区别,分布式系统中,一份文件可能对应一份物理文件,一份文件也可能被切割打散到不同的机器上,这是不同的实现方式,可以参考下GFS和Haystack的设计。对于文件存储,最主要的是一致性问题处理,有强一致同步方法,亚马逊提出的nwr模型,还有paxos/raft等多数派协议。这些方法也可以用来存储数据库的数据,但是分布式数据库还要在这之上实现分布式事务等复杂技术,可以看一下目前流行的数据库论文spanner和Aurora。
延伸阅读:
二、Vertica是什么
Vertica是一款基于列存储的MPP(massively parallel processing)架构的数据库。
它可以支持存放多至PB(Petabyte)级别的结构化数据。Vertica是由关系数据库大师Michael Stonebraker(2014 年图灵奖获得者)所创建,于2011年被惠普收购并成为其核心大数据平台软件。Vertica 采用无共享的MPP 架构,基于工业标准的x86 服务器,拥有高可扩展性。Vertica 集群中的所有节点100%对等,集群中没有主节点或其他共享资源。通过增加节点,就可以线性地扩展集群的计算能力和数据处理容量。Vertica 是真正的纯列式数据库,优化器和执行引擎可以忽略表中与查询无关的列。Vertica 不仅仅按列式存储数据,还主动地根据列数据的特点和查询的要求选用优异的算法对数据进行排序和编码压缩,这就极大地降低磁盘I/O 消耗。同时,Vertica 的执行引擎和优化器也是基于列式数据库设计的,编码压缩过的列数据在Vertica 的执行引擎中进行过滤、关联、分组等操作时不需要解反编码,从而大大降低了CPU 和内存消耗。
相关推荐HOT
更多>>python正则表达式中的零宽断言
python正则表达式中的零宽断言1、概念有些元字符不匹配任何字符,只是简单的表示成功或失败,所以这些字符也叫零宽断言。2、符号举例(1)|或操作...详情>>
2023-11-14 11:35:03python方法的绑定和未绑定
python方法的绑定和未绑定1、说明未绑定对象的方法:无self参数的方法,通过定义类调用函数,返回未绑定self的方法。绑定对象的方法:带self参...详情>>
2023-11-14 09:53:02python海象运算符的使用
python海象运算符的使用1、在判断条件下允许操作。在一定程度上简化了代码,但降低了可读性。i=len((l:=[1,2,3]))#先对l进行赋值,在对i赋值whi...详情>>
2023-11-14 02:38:21pythonelif语句报错是什么原因
python的else和elif语句也可以叫做子句,因为它们不能独立使用,两者都是出现在if、for、while语句内部的。else子句可以增加一种选择;而elif子...详情>>
2023-11-13 21:46:35