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_五大主流数据库模型相关推荐

  1. python web-2019年Python Web五大主流框架

    我们都知道风靡一时的Python语言作为人工智能战场上主要使用的枪外,还被广泛应用在Web开发.游戏开发.人工智能.云计算开发.大数据开发.数据分析.科学运算.爬虫.自动化运维.自动化测试等领域,其实 ...

  2. 人脸口罩检测现开源PyTorch、TensorFlow、MXNet等全部五大主流深度学习框架模型和代码...

    号外!号外! 现在,AIZOO开源PyTorch.TensorFlow.MXNet.Keras和Caffe五大主流深度学习框架的人脸检测模型和代码啦! 先附上Github链接为敬. https://g ...

  3. html5 css3浏览器,五大主流浏览器CSS3和HTML5兼容性大比拼

    五大主流浏览器CSS3和HTML5兼容性大比拼 出处:快科技 2011-05-26 16:15:42     编辑:萧萧[爆料] 收藏文章 各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让 ...

  4. html5与css3是互联网发展趋势,五大主流浏览器CSS3和HTML5兼容性比拼

    [IT168 评测]各大主流浏览器对CSS3和HTML5的支持越来越完善,曾经让多少前端开发人员心碎的IE系也开始拥抱标准.就在前几天,W3C的HTML5社区领袖Shelley宣布,HTML5的开发工 ...

  5. 【报告分享】2021年中国五大主流电商平台关于用户数据的最新规则汇总.pdf(附下载链接)...

    省时查报告-专业.及时.全面的行研报告库 省时查方案-专业.及时.全面的营销策划方案库 大家好,我是文文(微信号:sscbg2020),今天给大家分享纷析智库和夸克网于2021年9月份联合发布的报告& ...

  6. 五大主流浏览器及四大内核1

    转载:https://blog.csdn.net/yuyanjing123456789/article/details/78689595 任何上过网的用户对浏览器是再熟悉不过了.只是用户看到仅仅只是浏 ...

  7. 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题

    一 标题五大主流浏览器及其内核 1.Trident 代表作:IE 元老级内核之一,由微软开发,并于1997年10月首次在ie 4.0中使用,凭借其windows垄断优势, Trident市场占有率一直 ...

  8. 五大主流手机操作系统

    正赶上要做一个与手机操作系统相关的作业,从网上查找了很多这些知识(费了老劲了).现总结如下: 五大主流手机操作系统 塞班(Symbian) Symbian操作系统的前身是英国宝意昂公司(Psion)的 ...

  9. 智能手环五大主流MEMS传感器盘点

    不少人对智能手环已经不陌生了,虽然不同厂家的手环功能不一而足,但究其核心,都离不开各种各样的传感器.了解了传感器,就知晓了智能手环的核心功能.下面为大家介绍智能手环五大主流MEMS传感器. 1.意法半 ...

最新文章

  1. 肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解
  2. 学校SOLARIS ORACLE很好的电子教材
  3. Python中使用xpath获取Scrtpt里面的内容
  4. 火眼公司发布公开漏洞奖励计划
  5. (附源码)flutter+React Native+Springboot Api
  6. 视频教程-js+ajax+jquery+easyui从入门到精通(项目实战)-JavaScript
  7. Linux移植libmodbus
  8. ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)
  9. kali下使用工具进行钓鱼网站的制作
  10. 三、OpenDaylight应用基础开发(ODL的Hello World)
  11. opencv ipcam
  12. 嵌入式开发板如何自动登陆校园网实现上网
  13. 光通量发光强度照度亮度关系_光通量、发光强度、照度单位的关系
  14. zimbra邮箱服务器迁移
  15. windows命令获取帮助_如何在Windows 10中获得帮助
  16. 中学计算机课小课题,小学信息技术课堂有效教学的探索课题
  17. java集成开发环境的搭建
  18. 运行一个C语言程序的步骤
  19. 用函数递归的方法解决汉诺塔问题
  20. SDL Trados 2019 和 SDL Trados 2021 二零二一五月更新

热门文章

  1. [Spring Boot核心功能]1. SpringApplication 启动引导类(2)
  2. JS模块化规范对比以及在Node.js的实现
  3. C Linux 多线程入门
  4. phpstorm xdebug本地调试断点不生效_PHPSTORM与xdebug配置
  5. 玄元剑仙手游最新服务器,玄元剑仙最新
  6. 计算机博士一年看多少篇文献,博士生真的要一天看20篇文献吗?
  7. SQLyog客户端常用快捷键
  8. BPMN2.0--消息事件(message)
  9. php只刷新一次,怎么让php网页指只刷新一次
  10. python爬取cctalk视频_新媒体编辑怎么批量爬取数据