五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据库

2024-08-27 12:18

本文主要是介绍五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

也可以认为是五大数据库存储模型

数据库市场需要细分,行式数据库不再满足所有的需求,而有很多需求需要通过内存数据库列式数据库解决,列式数据库在数据分析、海量存储、BI这三个领域有自己独到。


1. 关系型数据库(行式数据库) mysql sybase etc

定义:关系模型使用记录(行或者元祖)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的语法查找符合条件的记录,如表联接(Join)。表联接可以基于表之间的关系在多表之间查询记录。


存储格式:行式数据库把一行中的数据值串在一起存储起来,然后再存储下一行的数据,以此类推

例如以下的一个表:

EmpId Lastname Firstname Salary
1 Smith Joe 40000
2 Jones Mary 50000
3 Johnson Cathy 44000
1,Smith,Joe,40000;2,Jones,Mary,50000;3,Johnson,Cathy,44000;


特点:据以行相关的存储体系架构进行空间分配,主要适合与小批量的数据处理,常用于联机事务型数据处理。不能满足后面三个需求:对数据库高并发读写要求,对海量数据的高效率存储和访问需求,对数据库高可扩展性和高可用性。 一句话不适合分布式、高并发和海量。


2. 列式存储 Sybase IQ, C-Store, Vertica,

定义:什么是列式数据库?列式数据库是以列相关存储架构进行数据存储的数据库。列式存储以流的方式在列中存储所有的数据,主要适合与批量数据处理即席查询

存储格式 :

列式数据库把一列中的数据值串在一起存储起来,然后再存储下一列的数据,以此类推。

1,2,3;Smith,Jones,Johnson;Joe,Mary,Cathy;40000,50000,44000;

特点:包括查询快,由于查询需要读取的blocks少数据压缩比高,正因为同一类型的列存储在一起。Load快。 简化数据建模的复杂性。但是插入更新慢,不太适合数据老是变化,它是按列存储的。这时候你就知道它适做DSS(决策支持系统),BI的优秀选择,数据集市,数据仓库,它不适合OLTP

Examples are Sybase IQ, C-Store, Vertica, VectorWise,MonetDB, ParAccel, and Infobright.

//具体请参考如下地址

http://en.wikipedia.org/wiki/Column-oriented_DBMS.


3. 键值存储 cassandra, hbase, bigtable

即Key-Value存储,简称KV存储。它是NoSQL存储的一种方式。它的数据按照键值对的形式进行组织,索引和存储。KV存储非常适合不涉及过多数据关系业务关系的业务数据,同时能有效减少读写磁盘的次数,比SQL数据库存储拥有更好的读写性能。

典型例子 Sorted String Table即SSTable。其实STL 库中map和hash_map, Java中hash_table, hash_map就是键值存储。 但是他们值只支持内存操作,而且map的查询效率太低,关键是他们只是简单的数据结构,不能实现较大规模存储和分布式,而且数据的修改效率比较低。 而SSTalbe就解决了这些问题。

键值存储实际是分布式表格系统的一种。

其中的实现机制也可以参考

LevelDB/Sstable: http://blog.chinaunix.NET/uid-26111972-id-3342215.html.

LevelDB: http://www.samecity.com/blog/Index.asp?SortID=12


分布式key-value 系统有cassandra, Hbase, bigtable etc

http://kkovacs.eu/cassandra-vs-MongoDB-vs-couchdb-vs-Redis

4. 文档存储 

文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构

事实上,文档存储以封包键值对的方式进行存储。在这种情况下,应用对要检索的封包采取一些约定,或者利用存储引擎的能力将不同的文档划分成不同的集合,以管理数据。

与关系模型不同的是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。

与键值存储不同的是,文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,从而允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,XQuery就是一个例子。MongoDB通过支持在查询中指定JSON字段路径实现类似的功能。

MongoDB 对SQL 和ACID 支持的比较全面的数据库了。不过, 比较多的还是介绍日志的采集和存储,小文件的分布式存储,类似互联网微博应用的数据存储等方面的内容。

MongoDB 和 Cassandra的比较:
http://www.csdn.net/article/2013-08-23/2816679-time-series-data-mongdb-vs-cassandra

5.图形数据库

图形数据库存储顶点的信息,有的支持添加注释。

图形数据库可用于对事物建模,如社交图谱、真实世界的各种对象。IMDB(Internet MovieDatabase)站点的内容就组成了一幅复杂的图像,演员与电影彼此交织在一起。

图形数据库的查询语言一般用于查找图形中断点的路径,或端点之间路径的属性。Neo4j是一个典型的图形数据库。

这篇关于五大存储模型关系模型、键值存储、文档存储、列式存储、图形数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111642

相关文章

使用Dify访问mysql数据库详细代码示例

《使用Dify访问mysql数据库详细代码示例》:本文主要介绍使用Dify访问mysql数据库的相关资料,并详细讲解了如何在本地搭建数据库访问服务,使用ngrok暴露到公网,并创建知识库、数据库访... 1、在本地搭建数据库访问的服务,并使用ngrok暴露到公网。#sql_tools.pyfrom

C语言中的浮点数存储详解

《C语言中的浮点数存储详解》:本文主要介绍C语言中的浮点数存储详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、首先明确一个概念2、接下来,讲解C语言中浮点型数存储的规则2.1、可以将上述公式分为两部分来看2.2、问:十进制小数0.5该如何存储?2.3 浮点

Java实现数据库图片上传功能详解

《Java实现数据库图片上传功能详解》这篇文章主要为大家详细介绍了如何使用Java实现数据库图片上传功能,包含从数据库拿图片传递前端渲染,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、数据库搭建&nbsChina编程p; 3、后端实现将图片存储进数据库4、后端实现从数据库取出图片给前端5、前端拿到

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

MySql中的数据库连接池详解

《MySql中的数据库连接池详解》:本文主要介绍MySql中的数据库连接池方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql数据库连接池1、概念2、为什么会出现数据库连接池3、原理4、数据库连接池的提供商5、DataSource数据源6、DBCP7、C

MySQL常见的存储引擎和区别说明

《MySQL常见的存储引擎和区别说明》MySQL支持多种存储引擎,如InnoDB、MyISAM、MEMORY、Archive、CSV和Blackhole,每种引擎有其特点和适用场景,选择存储引擎时需根... 目录mysql常见的存储引擎和区别说明1. InnoDB2. MyISAM3. MEMORY4. A

StarRocks数据库详解(什么是StarRocks)

《StarRocks数据库详解(什么是StarRocks)》StarRocks是一个高性能的全场景MPP数据库,支持多种数据导入导出方式,包括Spark、Flink、Hadoop等,它采用分布式架构,... 目录StarRocks介绍什么是StarRocks?StarRocks适合什么场景?StarRock

Python批量调整Word文档中的字体、段落间距及格式

《Python批量调整Word文档中的字体、段落间距及格式》这篇文章主要为大家详细介绍了如何使用Python的docx库来批量处理Word文档,包括设置首行缩进、字体、字号、行间距、段落对齐方式等,需... 目录关键代码一级标题设置  正文设置完整代码运行结果最近关于批处理格式的问题我查了很多资料,但是都没

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议