美文网首页
数据模型

数据模型

作者: victorivy | 来源:发表于2019-12-21 10:31 被阅读0次

数据模型介绍

数据建模挑战的是应用需求的平衡,数据库引擎的性能特性以及数据的检索模式。
在设计数据模型时,始终考虑数据的使用情况(例如:数据查询,更新和处理)和数据本身的固有结构.

灵活模式

不同于SQL数据库的写入数据前必须决定和声明一份表格结构,文档型数据库的集合在默认情况下不需要集合中的文档具有相同的结构.也就是说:

  • 在单个集合中的文档不需要有相同的字段集且字段的数据类型可以在集合中的不同文档之间有所不同.
  • 要更改一个集合中文档的结构,例如:添加新字段,删除现有字段或者改变字段的值数据类型,可以更新文档至新的结构.
    这种灵活帮助把文档映射成为一个实体或对象.每一个文档可以匹配所表示实体的数据字段,即使该文档和集合中的其他文档有很大的不同.
    在现实中,集合中的文档会具有相同的结构,我们可以在对集合进行更新和插入数据的操作时强制文档的有效性规则.

文档结构

为文档型数据库设计数据模型的关键是文档结构和应用程序如何呈现数据间的关系.
文档型数据库允许相关的数据嵌入到单个文档中.
嵌入式数据
嵌入式文档通过在单个文档结构中存储相关的数据来捕获数据间的关系.
文档型数据库允许在文档的字段或数组中嵌入文档结构.这些非结构化的数据模型允许应用程序在单次数据库操作中检索和操作相关数据.

{
  _id: <ObjectId1>,
  username: "123xyz",
  //嵌入的子文档
  contact: {
    phone: "123-456-7890",
    email: "xyz@example.com"
    },
  //嵌入的子文档
  access: {
    level: 5,
    group: "dev"
    }
}

在许多文档型数据库使用案例中,非结构化的数据模型是最佳的.
嵌入式数据模式应用场景:

  • 实体间存在包含关系的
  • 实体间存在1对多关系的
    引用
    引用通过文档间的链接或引用来存储数据间的关系.
    应用程序可以通过解释这些引用来访问数据,这些通常是结构化数据模式.
//user document
{
  _id: <ObjectId1>,
  username: "123xyz"
}
//contact document
{
  _id: <ObjectId2>,
  user_id: <ObjectId1>,
  phone: "123-456-7890",
  email: "xyz@example.com"
}
//access document
{
  _id: <ObjectId3>,
  user_id: <ObjectId1>,
  level: 5,
  group: "dev"
}

写操作的原子性

单个文档的原子性
在文档型数据库中,写操作是在单个文档级别上的原子操作,即使是操作修改了单个文档中的多个嵌入文档.
具有嵌入数据的非规范化数据模型将所有相关数据组合在一个文档中,而不是在多个文档和集合中进行规范化。 该数据模型有助于原子操作。
一次写入操作(例如db.collection.updateMany())修改多个文档时,每个文档的修改都是原子的,但整个操作不是原子的。
当执行多文档写操作时,无论是通过单次写操作还是通过多次写操作,其他操作可以交差进行。

相关文章

  • supermap知识库

    数据模型与地图投影 (1)数据模型 点数据模型 线数据模型 面数据模型 路由数据模型 复合数据模型 栅格数据模型 ...

  • 数据库-数据模型(分类、三要素、概念)

    数据模型的分类:最常用的数据模型是概念数据模型和结构数据模型:①概念数据模型(信息模型):面向用户的,按照用户的观...

  • PowerDesigner04 物理数据模型(PDM)

    索引 物理数据模型(CDM)概述 物理数据模型(CDM)创建步骤 学生、班级、老师物理数据模型 物理数据模型(CD...

  • PowerDesigner03 概念数据模型(CDM)

    索引 概念数据模型(CDM)概述 概念数据模型(CDM)创建步骤 学生、班级、老师概念数据模型 概念数据模型(CD...

  • 逆向工程

    逆向工程与EasyCode 一、基本概念 1、物理数据模型、逻辑数据模型与概念数据模型 数据模型所描述的内容包括三...

  • 计算机科学导论-数据模型

    数据模型 在计算机科学领域,数据模型通常指:1:对象可以采用的值。例如,很多数据模型包含具有整数值的对象。数据模型...

  • Python数据模型

    Python数据模型理解好Python的数据模型才是真正理解了Python这门语言Python数据模型其实就是对象...

  • 第二章 魔法函数

    一. 什么是魔法函数 二. python的数据模型以及数据模型对python的影响(数据模型也叫魔法函数) 三. ...

  • DDIA(二)

    数据模型与查询语言 多数应用使用层层叠加的数据模型构建。对于每层数据模型的关键问题是:它是如何用低一层数据模型来表...

  • FreeMarker页面静态化

    1、页面静态化 1.1 页面静态化 模板+数据模型=输出,页面静态化需要准备数据模型和模板,先知道数据模型的结构才...

网友评论

      本文标题:数据模型

      本文链接:https://www.haomeiwen.com/subject/bdownctx.html