首先了解下关系型数据库和非关系型数据库

关系型数据库

SQL关系型数据库采用了关系模式来组织数据,即关系模式为二维表格模型。

主要的数据库:SQL Server,Oracle,Mysql,PostgreSQL。

优点:容易理解,使用方便,易于维护

缺陷:对于高并发量的读写效率,高扩展性和可用性(难以横向扩展)

为了维护一致性牺牲了读写性能

非关系型数据库

NoSQL非关系型数据库是非关系型的、分布式的,用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

主要的数据库:MongoDB,Redis,CouchDB

NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获取用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。

分类:
1.面向高性能并发读写的key-value数据库

2.面向海量数据访问的面向文档数据库

3.面向可拓展的分布式数据库

缺陷:由于Nosql约束少,所以也不能够像sql那样提供where字段属性的查询。因此适合存储较为简单的数据。一些不能够持久化数据,需要和关系型数据库结合。

补充:
关系型数据库适合存储结构化数据,例如用户信息:

1.这些数据通常需要做结构化查询;

2.这些数据的规模。增长的速度是可预期的;

3.事务性、一致性,适合存储比较复杂的数据。

非关系型数据库存储非结构化数据,比如:文章、评论:
1.这些数据通常用于模糊处理,例如全文搜索、机器学习,适合存储较为简单的数据;

2.这些数据是海量的,并且增长的速度是难以预期的;

3.按照key获取数据效率很高,但是对于join或其他结构化查询的支持就比较差。

数据库系统必须维护事务的四个特性(ACID):

原子性 (Atomicity)  :事务包含的所有操作要么全部成功,要么全部失败回滚;成功必须要完全应用到数据库,失败则不能对数据库产生影响;

一致性 (Consistency)  :事务执行前和执行后必须处于一致性状态;

隔离性 (Isolation)  :当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不被其他事务的操作所干扰,多个并发事务之间要相互隔离;

持久性 (Durability)  :一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便在数据库系统遇到故障的情况下也不会丢失事物的操作。

推荐:https://blog.csdn.net/lzj3462144/article/details/70973368

最新文章

  1. 将Json数据保存在静态脚本文件中读取
  2. Qt下的udp编程
  3. 教你如何调用百度编辑器ueditor的上传图片、上传文件等模块
  4. ocx文件转换成C#程序引用的DLL
  5. gets()和getchar()还有getch()的区别
  6. 悟透javascript读书笔记
  7. Android XML文件布局各个属性详解
  8. Mysql slave 状态之Seconds_Behind_Master
  9. 坚持Delphi的厂商与产品
  10. bootstrapTable treegrid的使用
  11. python学习笔记_week26
  12. Maven 安装 on centos7
  13. 洛谷 P1162 填涂颜色【DFS】
  14. Mysql从库复制的2个问题
  15. [svc]Linux中Swap与Memory内存简单介绍
  16. JDBC-批处理操作
  17. 用php实现简单的自制计算器
  18. Java并发编程之volatile关键字解析
  19. [转载]AMOLED结构详解,BOE专家给你分析驱动补偿
  20. Composer 入门使用手册

热门文章

  1. 数据挖掘:基于Spark+HanLP实现影视评论关键词抽取(1)
  2. nyoj 139——我排第几个|| nyoj 143——第几是谁? 康托展开与逆康托展开
  3. c#.net常见字符串处理方法
  4. 融云会话界面导航上移-使用IQKeyboardManager
  5. C#学习笔记10
  6. ubuntu系统没有声音解决方法
  7. 位运算(6)——Number Complement
  8. [工作积累点滴整理]虚拟化、云计算配置规划<一>
  9. Ruby系列文章之1---开发者应该熟悉的10个工具
  10. asyncio标准库3 HTTP client example