CodeGym /课程 /SQL SELF /数据库管理系统的类型:关系型和NoSQL

数据库管理系统的类型:关系型和NoSQL

SQL SELF
第 1 级 , 课程 2
可用

数据库管理系统(DBMS)主要有两种类型:关系型和NoSQL。关系型就是用表来存数据,列和行都很规整——就像Excel那样。NoSQL就自由多了,不用死板的结构。要是你数据结构不固定或者经常变,NoSQL就很方便。

顺便说一句,NoSQL不是“不用SQL”的意思,更像是“Not Only SQL”。很多NoSQL系统其实也能理解SQL语句,只是工作方式有点不一样。

常见的DBMS例子:

  • 关系型:PostgreSQL、MySQL、Microsoft SQL Server。
  • NoSQL:MongoDB、Cassandra、Redis。

关系型数据库管理系统

关系型数据库(RDB)把数据组织成表格,每一行就是一条记录(或者说一个对象),每一列就是一个字段(属性)。表之间通过键来关联:主键(用来唯一标识记录)和外键(用来连接表)。

给你看个经典的“学生”表在关系型DBMS里的样子:

id name age group
1 Anna 21 KA-01
2 Eve 20 KA-02
3 Max 22 KA-01

关系型DBMS的主要特点:

  • 数据结构很严格。
  • 表之间的关系靠键来定。
  • 用SQL(Structured Query Language)来操作数据。

优点

  1. 结构严谨:表格保证每个对象都有固定的字段,管理数据更简单。
  2. 数据完整性:靠主键和外键,关系型数据库能防止数据不一致。
  3. 支持ACID标准:关系型DBMS保证事务可靠,遵循原子性、一致性、隔离性和持久性。
  4. 支持复杂查询:SQL能做强大的查询、排序和聚合操作。

关系型DBMS特别适合数据结构很清晰、每个细节都要对得上的场景。比如银行系统,数据不能丢——每一笔账都得有记录。再比如各种管理系统:发票、客户、仓库这些通常结构固定,用表来存最合适。当然,很多Web应用也用关系型数据库,比如用户、商品、订单列表——这些都很适合用表和严格的关系来搞定。

NoSQL数据库管理系统

NoSQL(Not Only SQL)就是不走关系型那一套的DBMS。数据可以存成文档、键值对、图、列啥的。核心思想就是灵活:你可以按自己需求存数据,不用死守规则。当然,这也有代价。

NoSQL存数据的例子(比如MongoDB):

{
  "id": 1,
  "name": "Alex",
  "age": 21,
  "group": "KA-01"
}

NoSQL DBMS种类很多——主要看它们怎么存数据。比如,文档型DBMS(像MongoDB)用灵活的结构,数据存成文档,通常是JSON格式。这样每条记录的结构都可以不一样,很方便。

键值型DBMS,比如Redis,就是个巨大的“键:值”仓库。特别适合做缓存或者快速查简单配置。

要是你得处理对象之间的关系——比如分析社交网络的好友,或者搞路径分析——那就用图型DBMS,像Neo4j。它们把信息存成节点和关系的网络,处理这类结构特别顺手。

还有列式DBMS,比如Apache Cassandra或HBase,数据是按列存的,不是按行。这在你要分析大数据、只关心某些指标时特别有用——比如搞分析或者Big Data系统。

为啥、啥时候选NoSQL

NoSQL数据库在关系型DBMS开始吃力的时候就很牛。它们有几个大优点:

  1. 速度快。NoSQL能轻松应对超大数据量——查询很快,就算数据像Excel表那样乱七八糟也没事。
  2. 结构灵活。数据结构随时能改:今天有三个字段,明天五个,也不会崩。
  3. 易扩展。数据太多时,可以直接分到不同服务器。这叫横向扩展,NoSQL最喜欢这个。
  4. 和Big Data很搭。要是你有日志流、事件、用户行为或者其他没啥结构的“原始”数据——NoSQL能搞定。

这些DBMS特别适合:

  • 数据量暴涨、结构老变(比如日志或事件分析),
  • 需要快速查找和聚合信息(比如搞分析),
  • 有复杂关系网,比如社交网络(图型DBMS最合适)。

简单说,要是你的项目更像个活生生的有机体,而不是死板的表格,NoSQL可能就是你要的。

关系型和NoSQL数据库的对比

特点 关系型DBMS NoSQL DBMS
数据存储 表、行、列 文档、图、键值、列
查询语言 SQL 看实现(比如MongoDB Query)
数据完整性 高(主键/外键) 看实现(不一定保证完整性)
扩展性 纵向扩展(加大服务器) 横向扩展(分布到多台服务器)
结构灵活性 结构死板(表和字段固定) 结构动态(随时能变)
性能 适合结构化数据 大数据量和弱结构数据时很快
例子 PostgreSQL、MySQL、Oracle Database MongoDB、Cassandra、Redis

啥时候选关系型还是NoSQL数据库?

关系型DBMS:

  • 数据结构很死板。
  • 需要事务支持。
  • 要用SQL做复杂分析。

NoSQL DBMS:

  • 需要数据结构灵活。
  • 扩展性比结构更重要。
  • 要处理大数据量,表格搞不定的那种。

可以这么比喻:关系型DBMS就像Excel表,行列都很整齐。NoSQL就像便签板,啥都能贴上去,从小纸条到照片都行。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION