关系型数据库

领域模型:聚合、聚合根详解

早过忘川 提交于 2019-12-17 01:14:32
  聚合和聚合根是领域模型里面很重要的一个概念,其实我们在从真实世界对业务对象进行识别和概念建模的时候,关注的就是聚合根,这才是我们真正要管理的业务对象。一个对象可能有多个层次,也可能有多个子实体,但是这些子实体都不可能孤立存在,它们必须依附于一个聚合根存在,它们和根节点具有同样的生命周期。    如果一个客户消亡,客户联系方式,客户的多张银行账户信息将不再有任何意义。 如果一张采购订单头消失,那么采购订单明细没有任何存在的意义。客户,采购订单,发票这些从真实业务中转化过来的业务对象才是真正的领域核心对象。 这些对象可能在领域建模的时候会分解到多个Entity或Value Object,但是一定要意识到实际的聚合在哪里? 我们真正关注的业务对象实体究竟有哪些?   为什么如此强调领域模型,强调聚合根的概念,因此我们在关注领域模型的时候将有助于我们打破原有的关系型数据库的思维模式,转化为对象和领域的思维模式。可以看到领域建模和聚合根的思路正是既适合于关系型数据库,也适合NoSql数据库的建模思路。因为在NoSQL持久化的时候,我们看到采购订单就是一个对象,其它明细和关联信息都是这个对象下的子实体信息,采购订单应该作为一个对象整体进行查询和存储,我们并不关系NoSQL会如何去存储这个对象。让我们正在关注领域对象,而不是去关心如何持久化。   聚合Aggregate就是一组相关对象的集合

MySQL数据库初识

拥有回忆 提交于 2019-12-16 22:52:51
一 数据库概述 1. 数据库???   什么是数据库呢?   先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。   百度的貌似不好理解啊,让我说啊,数据库是存储数据的地方,超哥,你这不是废话么?这位同学,你你你你你说的对,哈哈,存数据的地方是存在哪里呢,存在硬盘上,为什么不是存在内存里面,因为内存无法永久保存。之前我们存数据都是使用的文件,在一个word文档里面写一些羞羞的网址,然后保存,就存储到硬盘上了。有同学就会说了,超哥,我这通过文件不是也将数据保存上了吗?是的,没毛病,但是你想,通过文件来操作数据,效率是不是很低,首先打开关闭就比较慢,其次是我们操作起来也比较麻烦,对不对,如果我想记录一条关于我个人信息的数据,我使用文档来存,是不是很不友好,并且我们要查数据的时候,看图1:图1是一个word里面记录的信息,如果我想查询出所有人的名字,这个操作是不是就很难搞定了,来来来,配合起来~~,你应该说是的,那我就接着说,有同学可能就会说了,老师我用excel啊,看图2,一列就搞定了,没毛病,但是你想打开操作excel效率低不低。并且通过你自己写的程序来操作这些文件是不是很麻烦

day40

偶尔善良 提交于 2019-12-16 20:13:06
数据库相关 1.什么是数据库:数据库就是存储数据的仓库;本质是就是一套CS结构的TCP程序。 常见数据库分类 1.关系型数据库 数据库可以为数据与数据之间建立关系。例:人是一条数据,他可能关联一个工作岗位数据。双方可以通过自身找到对方。 mysql 免费开源 支持中大型企业 为了防止mysql被闭源 以及 担心oracle的优化能力 创始人Widenius 另起灶炉 开发了mariaDB mariaDB 完全兼容mysql 使用起来 一模一样 mysql的一生 坎坎坷坷 先后被 sun - oracle收购 oracle 收费闭源 功能强大 分布式数据库 SQLServer 微软生态圈 仅支持 windows系统 太局限 DB2 IMB 开发的数据库软件 收费闭源 经常与IMB的机器绑定销售 打折啥的 2.非关系型数据库 通过key valus存储数据各个数据之间没有关系 不是通用性数据库 有局限性 通常运行在将数据存储在内存中,以提高速度,所以非关系型数据库多用于缓存,与关系型数据库搭配使用。 MongoDB redis memcache 总结 : 我们通常说的数据库就是一套软件 有服务端和客户端 用来操作服务器端上的文件 数据库相关概念(与文件系统对应关系) 1.数据:本质上文件中某一行的一部分数据用于记录事物状态信息,可以是数字 字符 等 2.库:就是一个文件夹(数据库) 3

数据库范式

不想你离开。 提交于 2019-12-16 17:44:12
后面的范式一定要满足前面的范式!!! 第一范式:(1NF) 是指在关系模型中,对于添加的一个规范要求,所有的域都应该是 原子性 的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域(列不能在分)。 错误一:( 关系型数据库(列固定 行多个)MySQL oracle sqlserver 非关系型数据库NoSQL 是关系型数据库的补充(基于内存)缓存服务 redis ) id name age sex tel tel1 tel2 tel3 tel4 tel5 错误二: id name age sex tel 1 张三 18 男 2 李四 18 男 110 3 王五 18 男 120,130,140 正确 User telephone id name age sex id uid tel 1 张三 18 男 1 2 120 2 李四 19 男 2 3 130 3 王五 19 男 3 3 140 第二范式:(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF

大数据预处理架构和方法

非 Y 不嫁゛ 提交于 2019-12-16 15:13:38
数据预处理主要包括数据清洗(Data Cleaning)、数据集成(Data Integration)、数据转换(Data Transformation)和数据消减(Data Reduction)。本节在介绍大数据预处理基本概念的基础上对数据预处理的方法进行讲解。 大数据预处理整体架构 大数据预处理将数据划分为结构化数据和半结构化/非结构化数据,分别采用传统 ETL 工具和分布式并行处理框架来实现。总体架构如图 1 所示。 图 1 大数据预处理总体架构 结构化数据可以存储在传统的关系型数据库中。关系型数据库在处理事务、及时响应、保证数据的一致性方面有天然的优势。 非结构化数据可以存储在新型的分布式存储中,如 Hadoop 的 HDFSo 半结构化数据可以存储在新型的分布式 NoSQL 数据库中,如HBase。 分布式存储在系统的横向扩展性、存储成本、文件读取速度方面有着显著的优势。 结构化数据和非结构化数据之间的数据可以按照数据处理的需求进行迁移。例如,为了进行快速并行处理,需要将传统关系型数据库中的结构化数据导入到分布式存储中。 可以利用 Sqoop 等工具,先将关系型数据库的表结构导入分布式数据库,然后再向分布式数据库的表中导入结构化数据。 数据质量问题分类 数据清洗在汇聚多个维度、多个来源、多种结构的数据之后,对数据进行抽取、转换和集成加载。 在以上过程中,除了更正

nodejs非关系型数据库mongodb

情到浓时终转凉″ 提交于 2019-12-16 01:59:01
数据库 为什么要学习Node.js 理解为: Node.js是对js的一个扩展 Node.js是前端框架的底层 什么是数据库? 存储数据的一个仓库 数据库分类?和它的代表 关系型数据库 【 SQL 】 代表: mysql 非关系型数据库【 NOSQL 】 代表: Mongodb 如何区分一个数据库属于哪一个类别 经验: 有没有表, 有,那就是SQL , 没有,那就是NoSql 数据库构成 关系型数据库 数据库 -> 表 -> 行 非关系型数据库 数据库 -> 集合 -> 文档 总结: 数据库功能是用来存储数据的。 数据库分为关系系数据库和非关系型数据库(nosql) 关系型数据库是由表和表之间的关系组成的,nosql是由集合组成的,集合下面是很多的文档。 非关系型数据库文件存储格式为BSON(一种JSON的扩展)。 MongoDB 概念 基于分布式文件存储的数据库 分布式: git 存储类型: BSON 什么是bson? bson是json的超集, bson拥有json的所有,但是它有json没有的二进制类型 安装 MongoDB官网地址: https://www.mongodb.com/ MongoDB下载地址: https://www.mongodb.com/download-center#community MongoDB for Windows 64-bit 适合 64

Oracle 数据库(一)—— Oracle 数据库介绍

一笑奈何 提交于 2019-12-16 01:42:08
文章目录 一、Oracle 数据库概述 1、Oracle 概述 二、关系型数据库 1、数据库管理系统 2、数据库设计范式 三、Oracle 11g 的新功能 一、Oracle 数据库概述 1、Oracle 概述 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。 二、关系型数据库 1、数据库管理系统 在数据库系统中,数据模型主要有层次模型、网状模型和关系模型三种(另外-种面向对象模型还处在探索研究中),目前理论成熟、使用普及的模型就是关系模型一关系型数据库的理论基础。 (1)关系型数据库与数据库管理系统 关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据,现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。 关系模型以二维表来描述数据。在关系模型中,每个表有多个字段列和记录行,每个字段列有固定的类型属性(如数字、字符、日期等类型)。关系模型数据结构简单、清晰、具有很高的数据独立性,因此是目前主流的数据库数据模型。 在关系数据模型中

项目代码结构 Dao,Service,Controller,Util,Model 含义

◇◆丶佛笑我妖孽 提交于 2019-12-15 11:23:25
DAO = Data Access Object = 数据存取对象 Service = 服务 Controller = 控制器 Util = 工具 Model = 模型 首先,一个代码是不是有完善的结构,和是不是有上面这些东西没有什么关系,只是通常来说,我们做一个大项目会把项目分解成很多不不同的模块(Module),然后根据用途和角色,我们对这些模块有一个通用的命名规则,这也就是上面这些英文单词的来历。 所以,请一定记住,项目中是否包含这些模块或者单词,和你的项目结构是否完善一毛钱关系没有。但是当你的项目结构相对完善的时候,你会发现有这样一些角色的存在。 接下来一个个的来详细讨论一下这个东西是如何出现的: DAO,数据存取对象 。通常我们会遇到很多要和数据库打交道的场景,如果为每一个场景都去写一些SQL语句,会让我们代码变得很奇怪,我们希望我们的代码比较干净整洁,那么一个很容易想到的方案就是把数据库封装一下,让我们和数据库的交道看起来比较像和一个对象打交道。这个对象通常就是DAO,当我们操作这个对象的时候,这个对象会自动的产生SQL语句来和数据库打交道,而我们只需要和DAO打交道就可以了。 当然,从本质上来说,DAO并不需要和数据库有什么必然的联系,DAO只是数据存取对象的缩写,所以只要是把数据持久化包装成一个对象的访问(读写),这种对象都可以被称之为DAO,譬如

浅谈MySQL索引优化分析

蓝咒 提交于 2019-12-15 03:41:18
为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?撸起袖子就是干! 案例分析 我们先简单了解一下非关系型数据库和关系型数据库的区别。 MongoDB是NoSQL中的一种。NoSQL的全称是Not only SQL,非关系型数据库。它的特点是性能高,扩张性强,模式灵活,在高并发场景表现得尤为突出。但目前它还只是关系型数据库的补充,它在数据的一致性,数据的安全性,查询的复杂性问题上和关系型数据库还存在一定差距。 MySQL是关系性数据库中的一种,查询功能强,数据一致性高,数据安全性高,支持二级索引。但性能方面稍逊与MongoDB,特别是百万级别以上的数据,很容易出现查询慢的现象。这时候需要分析查询慢的原因,一般情况下是程序员sql写的烂,或者是没有键索引,或者是索引失效等原因导致的。 公司ERP系统数据库主要是MongoDB(最接近关系型数据的NoSQL),其次是Redis,MySQL只占很少的部分。现在又重新使用MySQL,归功于阿里巴巴的奇门系统和聚石塔系统。考虑到订单数量已经是百万级以上,对MySQL的性能分析也就显得格外重要。 我们先通过两个简单的例子来入门

Redis了解

自作多情 提交于 2019-12-14 19:19:53
Redis 概念 redis是一款高性能的NOSQL系列的非关系型数据库 1、什么是NOSQL NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。 2、NOSQL和关系型数据库比较 NOSQL优点: 1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。 2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。 3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。 4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。 NOSQL缺点: 1)维护的工具和资料有限,因为nosql是属于新的技术