Skip to content

Commit

Permalink
mongodb
Browse files Browse the repository at this point in the history
  • Loading branch information
wqw547243068 committed Jan 18, 2025
1 parent 6acf695 commit 69dbeca
Showing 1 changed file with 47 additions and 11 deletions.
58 changes: 47 additions & 11 deletions _posts/2013-11-01-database.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ layout: post
title: "数据库及SQL-database&sql-note"
date: 2013-11-01 23:02:00
categories: 数据挖掘
tags: 数据库 SQL python pymysql sqlite redis go serverless 云数据库
tags: 数据库 SQL python pymysql sqlite redis go serverless 云数据库 mongodb
excerpt: 数据挖掘知识点、经验总结
author: 鹤啸九天
mathjax: true
Expand Down Expand Up @@ -70,6 +70,25 @@ permalink: /data

注:关系型数据库其实不擅长处理关系型数据

## ACID

关系型数据库遵循ACID规则

**事务**在英文中是transaction,和现实世界中的交易很类似,有如下四个特性:

- 1、`A` (Atomicity) **原子性**
- 原子性很容易理解,事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
- 比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
- 2、`C` (Consistency) **一致性**
- 一致性也比较容易理解,数据库要一直处于一致状态,事务的运行不会改变数据库原本的一致性约束。
- 例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
- 3、`I` (Isolation) **独立性**
- 独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
- 比如现在有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
- 4、`D` (Durability) **持久性**
- 持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。


## SQL

### 什么是 SQL
Expand Down Expand Up @@ -776,17 +795,17 @@ NoSQL = Not Only SQL(不仅仅是SQL)
- Not Only Structured Query Language

分析:
- 关系型数据库:列+行,同一个表下数据的结构是一样的
- 非关系型数据库:数据存储没有固定的格式,并且可以进行横向扩展
- 关系型数据库:列+行,同一个表下数据的结构一样
- 非关系型数据库:数据存储没有固定格式,并且可以进行**横向**扩展

NoSQL泛指**非关系型**数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。
NoSQL 泛指**非关系型**数据库,随着web2.0互联网的诞生,传统的关系型数据库很难对付web2.0时代!尤其是超大规模的高并发的社区,暴露出来很多难以克服的问题,NoSQL在当今大数据环境下发展的十分迅速,Redis是发展最快的。

Nosql特点
Nosql 特点
- 方便扩展(数据之间没有关系,很好扩展!)
- 大数据量高性能(Redis一秒可以写8万次,读11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高!)
- 数据类型是多样型的!(不需要事先设计数据库,随取随用)

传统的 RDBMS 和 NoSQL
### 传统 RDBMS 和 NoSQL

传统的 RDBMS(关系型数据库)
- 结构化组织
Expand Down Expand Up @@ -817,15 +836,15 @@ Nosql

[狂神说 Redis笔记](https://blog.csdn.net/DDDDeng_/article/details/108118544)

## NoSQL分类
## NoSQL 分类

Nosql的四大分类
Nosql 四大分类

|分类 | Examples举例 | 典型应用场景 | 数据模型 | 优点|
|---|---|-----|---|---|
|键值对(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快|
|列存储数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展|
|文档型数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构|
|**键值对**(key-value) | Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB | 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 | Key 指向 Value 的键值对,通常用hash table来实现 | 查找速度快|
|**列存储**数据库 | Cassandra, HBase, Riak | 分布式的文件系统 | 以列簇式存储,将同一列数据存在一起 | 查找速度快,可扩展性强,更容易进行分布式扩展|
|**文档型**数据库 | CouchDB, MongoDb | Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容) | Key-Value对应的键值对,Value为结构化数据 | 数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构|
|图形(Graph)数据库 | Neo4J, InfoGrid, Infinite Graph | 社交网络,推荐系统等。专注于构建关系图谱 | 图结构 | 利用图结构相关算法。比如最短路径寻址,N度关系查找等|

[狂神说 Redis笔记](https://blog.csdn.net/DDDDeng_/article/details/108118544)
Expand Down Expand Up @@ -1488,6 +1507,23 @@ r.sunion("set_name","set_name1","set_name2")
```



## MongoDB

MongoDB 是一个**文档型**数据库,以类似 JSON 的文档形式存储数据。

MongoDB 设计理念:大数据量、高性能和灵活性需求。

MongoDB 使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。
- `数据库`(Database):存储数据的容器,类似于关系型数据库中的数据库。
- `集合`(Collection):数据库中的一个集合,类似于关系型数据库中的表。
- `文档`(Document):集合中的一个数据记录,类似于关系型数据库中的行(row),以 BSON 格式存储。

MongoDB 将数据存储为一个文档,数据结构由**键值**(key=>value)对组成,文档类似于 JSON 对象,字段值可以包含其他文档,数组及文档数组:




## 云数据库

【2022-4-7】[数据库技术新版图 - Serverless 数据库](https://www.toutiao.com/article/7083676554441523727)
Expand Down

0 comments on commit 69dbeca

Please sign in to comment.