ylbtech_dbs_article_五大主流数据库模型
ylbtech_dbs_article
摘要:什么是数据模型? 访问数据库中的数据取决于数据库实现的数据模型。数据模型会影响客户端通过API对数据的操作。不同的数据模型可能会提供或多或少的功能。一般而言,数据模型不会直接提供过多的功能,许多功能必须由客户端自行实现。 数据模型决定了客户端如何对数据进行编码存储。应用程序需...
导读:无论是关系型数据库还是非关系型数据库,都是某种数据模型的实现。本文将为大家简要介绍5种常见的数据模型,让我们来追本溯源,窥探现在流行的数据库解决方案背后的神秘世界。
什么是数据模型?
访问数据库中的数据取决于数据库实现的数据模型。数据模型会影响客户端通过API对数据的操作。不同的数据模型可能会提供或多或少的功能。一般而言,数据模型不会直接提供过多的功能,许多功能必须由客户端自行实现。
数据模型决定了客户端如何对数据进行编码存储。应用程序需要某种域模型与存储技术支持的特性进行映射。
迄今为止,主导的数据模型仍然是关系模型。在这里,我们主要想为大家介绍一下非关系模型,作为对比,本文也会简要介绍一下关系模型。
数据模型概述
1.关系模型
关系模型使用记录(由元组组成)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的语法查找符合条件的记录,如表联接(Join)。表联接可以基于表之间的关系在多表之间查询记录。
表中的记录可以被创建和删除,记录中的字段也可以单独更新。
关系模型数据库通常提供事务处理机制,这为涉及多条记录的自动化处理提供了解决方案。
对不同的编程语言而言,表可以被看成数组、记录列表或者结构。表可以使用B树和哈希表进行索引,以应对高性能访问。
2.键值存储
键值存储提供了基于键对值的访问方式。
键值对可以被创建或删除,与键相关联的值可以被更新。
键值存储一般不提供事务处理机制。
对不同的编程语言而言,键值存储类似于哈希表。对此,不同的编程语言有不同的名字(如,Java称之为“HashMap”,Perl称之为“hash”,Python称之为“dict”,PHP称之为“associative array”),C++则称之为“boost::unordered_map<...>”。
键值存储支持键上自有的隐式索引。
键值存储看起来好像不太有用,但却可以在“值”上存储大量信息。“值”可以是一个XML文档,一个JSON对象,或者其它任何序列化形式。
重要的是,键值存储引擎并不在意“值”的内部结构,它依赖客户端对“值”进行解释和管理。
3.文档存储
文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构。
事实上,文档存储以封包键值对的方式进行存储。在这种情况下,应用对要检索的封包采取一些约定,或者利用存储引擎的能力将不同的文档划分成不同的集合,以管理数据。
与关系模型不同的是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。
与键值存储不同的是,文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,从而允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,XQuery就是一个例子。MongoDB通过支持在查询中指定JSON字段路径实现类似的功能。
4.列式存储
如果翻转数据,列式存储与关系存储将会非常相似。与关系模型存储记录不同,列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据。
Map-reduce的实现Hadoop的流数据处理效率非常高,列式存储的优点体现的淋漓极致。因此,HBase和Hypertable通常作为非关系型数据仓库,为Map-reduce进行数据分析提供支持。
关系类型的列标对数据分析效果不好,因此,用户经常将更复杂的数据存储在列式数据库中。这直接体现在Cassandra中,它引入的“column family”可以被认为是一个“super-column”。
列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。
5.图形数据库
图形数据库存储顶点和边的信息,有的支持添加注释。
图形数据库可用于对事物建模,如社交图谱、真实世界的各种对象。IMDB(Internet Movie Database)站点的内容就组成了一幅复杂的图像,演员与电影彼此交织在一起。
图形数据库的查询语言一般用于查找图形中断点的路径,或端点之间路径的属性。Neo4j是一个典型的图形数据库。
选择哪一种数据模型?
数据模型有着各自的优缺点,它们适用于不同的领域。不管是选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。也许你会发现单一的数据模型不能满足你的解决方案,许多大型应用可能需要集成多种数据模型。(张志平/编译)
原文链接:Data Models
ylbtech_dbs_article_五大主流数据库模型相关推荐
- python web-2019年Python Web五大主流框架
我们都知道风靡一时的Python语言作为人工智能战场上主要使用的枪外,还被广泛应用在Web开发.游戏开发.人工智能.云计算开发.大数据开发.数据分析.科学运算.爬虫.自动化运维.自动化测试等领域,其实 ...
- 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...
号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...
- html5 css3浏览器,五大主流浏览器CSS3和HTML5兼容性大比拼
五大主流浏览器CSS3和HTML5兼容性大比拼 出处:快科技 2011-05-26 16:15:42 编辑:萧萧[爆料] 收藏文章 各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让 ...
- html5与css3是互联网发展趋势,五大主流浏览器CSS3和HTML5兼容性比拼
[IT168 评测]各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准.就在前几天,W3C的HTML5社区领袖Shelley宣布,HTML5的开发工 ...
- 【报告分享】2021年中国五大主流电商平台关于用户数据的最新规则汇总.pdf(附下载链接)...
省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 大家好,我是文文(微信号:sscbg2020),今天给大家分享纷析智库和夸克网于2021年9月份联合发布的报告& ...
- 五大主流浏览器及四大内核1
转载:https://blog.csdn.net/yuyanjing123456789/article/details/78689595 任何上过网的用户对浏览器是再熟悉不过了.只是用户看到仅仅只是浏 ...
- 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题
一 标题五大主流浏览器及其内核 1.Trident 代表作:IE 元老级内核之一,由微软开发,并于1997年10月首次在ie 4.0中使用,凭借其windows垄断优势, Trident市场占有率一直 ...
- 五大主流手机操作系统
正赶上要做一个与手机操作系统相关的作业,从网上查找了很多这些知识(费了老劲了).现总结如下: 五大主流手机操作系统 塞班(Symbian) Symbian操作系统的前身是英国宝意昂公司(Psion)的 ...
- 智能手环五大主流MEMS传感器盘点
不少人对智能手环已经不陌生了,虽然不同厂家的手环功能不一而足,但究其核心,都离不开各种各样的传感器.了解了传感器,就知晓了智能手环的核心功能.下面为大家介绍智能手环五大主流MEMS传感器. 1.意法半 ...
最新文章
- 肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解
- 学校SOLARIS ORACLE很好的电子教材
- Python中使用xpath获取Scrtpt里面的内容
- 火眼公司发布公开漏洞奖励计划
- (附源码)flutter+React Native+Springboot Api
- 视频教程-js+ajax+jquery+easyui从入门到精通(项目实战)-JavaScript
- Linux移植libmodbus
- ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)
- kali下使用工具进行钓鱼网站的制作
- 三、OpenDaylight应用基础开发(ODL的Hello World)
- opencv ipcam
- 嵌入式开发板如何自动登陆校园网实现上网
- 光通量发光强度照度亮度关系_光通量、发光强度、照度单位的关系
- zimbra邮箱服务器迁移
- windows命令获取帮助_如何在Windows 10中获得帮助
- 中学计算机课小课题,小学信息技术课堂有效教学的探索课题
- java集成开发环境的搭建
- 运行一个C语言程序的步骤
- 用函数递归的方法解决汉诺塔问题
- SDL Trados 2019 和 SDL Trados 2021 二零二一五月更新
热门文章
- [Spring Boot核心功能]1. SpringApplication 启动引导类(2)
- JS模块化规范对比以及在Node.js的实现
- C Linux 多线程入门
- phpstorm xdebug本地调试断点不生效_PHPSTORM与xdebug配置
- 玄元剑仙手游最新服务器,玄元剑仙最新
- 计算机博士一年看多少篇文献,博士生真的要一天看20篇文献吗?
- SQLyog客户端常用快捷键
- BPMN2.0--消息事件(message)
- php只刷新一次,怎么让php网页指只刷新一次
- python爬取cctalk视频_新媒体编辑怎么批量爬取数据