來自[數據庫](https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%BA%93)
[TOC=1,3]
## 數據庫
數據庫,簡單來說可視為電子化的文件柜——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作[1]。
數據庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗余度、與應用程序彼此獨立的數據集合。
## 數據庫管理系統
數據庫管理系統(英語:Database Management System,簡稱DBMS)是為管理數據庫而設計的電腦軟件系統,一般具有存儲、截取、安全保障、備份等基礎功能。數據庫管理系統可以依據它所支持的數據庫模型來作分類,例如關系式、XML;或依據所支持的電腦類型來作分類,例如服務器群集、移動電話;或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能沖量重點來作分類,例如最大規模、最高運行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
## 類型
### 關系數據庫
* MySQL
* MariaDB(MySQL的代替品[2],英文維基百科從MySQL轉向MariaDB[3])
* Percona Server(MySQL的代替品[4] · [5])
* PostgreSQL
* Microsoft Access
* Microsoft SQL Server
* Google Fusion Tables
* FileMaker
* Oracle數據庫
* Sybase
* dBASE
* Clipper
* FoxPro
* foshub
幾乎所有的數據庫管理系統都配備了一個開放式數據庫連接(ODBC)驅動程序,令各個數據庫之間得以互相集成。
### 非關系型數據庫(NoSQL)
* BigTable(Google)
* Cassandra
* MongoDB
* CouchDB
### 鍵值(key-value)數據庫
* Apache Cassandra(為Facebook所使用[6]):高度可擴展[7]
* Dynamo
* LevelDB(Google)
## 數據庫模型
在軟件工程中,數據模型是定義數據如何輸入和與輸出的一種模型。其主要作用是為信息系統提供數據的定義和格式。數據模型是數據庫系統的核心和基礎,現有的數據庫系統都是基于某種數據模型而創建起來的。
### 要求
1. 比較直觀地模擬現實世界
2. 容易為人理解
3. 便于計算機實現[1]
### 三要素
1. 數據結構:儲存在數據庫中對象類型的集合,作用是描述數據庫組成對象以及對象之間的聯系。
2. 數據操作:指對數據庫中各種對象實例允許執行的操作的集合,包括操作及其相關的操作規則。
3. 數據完整性約束條件:指在給定的數據模型中,數據及其聯系所遵守的一組通用的完整性規則,它能保證數據的正確性和一致性。[1]
### 分類
* 對象模型
* 層次模型(輕量級數據訪問協議)
* 網狀模型(大型數據儲存)
* 關系模型
* 面向對象模型
* 半結構化模型
* 平面模型(表格模型,一般在形式上是一個二維數組。如表格模型數據Excel)
## 架構
數據庫的架構可以大致區分為三個概括層次:內層、概念層和外層。
1. 內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
2. 外層:最接近用戶,即有關個別用戶觀看數據的方式。
3. 概念層:介于兩者之間的間接層。[8]
## 數據庫索引
數據索引的觀念由來已久,像是一本書前面幾頁都有目錄,目錄也算是索引的一種,只是它的分類較廣,例如車牌、身份證字號、條碼等,都是一個索引的號碼,當我們看到號碼時,可以從號碼中看出其中的端倪,若是要找的人、車或物品,也只要提供相關的號碼,即可迅速查到正確的人事物。
另外,索引跟字段有著相應的關系,索引即是由字段而來,其中字段有所謂的關鍵字段(Key Field),該字段具有唯一性,即其值不可重復,且不可為"空值(null)"。例如:在合并數據時,索引便是扮演欲附加字段數據之指向性用途的角色。故此索引為不可重復性且不可為空。
## 數據庫操作:事務
事務(transaction)是用戶定義的一個數據庫操作序列,這些操作要么全做,要么全不做,是一個不可分區的工作單位。 事務的ACID特性:
1. 基元性(atomicity)
2. 一致性(consistency)
3. 隔離性(isolation)
4. 持續性(durability)
事務的并發性是指多個事務的并行操作輪流交叉運行,事務的并發可能會訪問和存儲不正確的數據,破壞交易的隔離性和數據庫的一致性。
- 數據庫
- CAP定理
- 關系模型
- 關系數據庫
- NoSQL
- ODBC
- JDBC
- ODBC、JDBC和四種驅動類型
- mysql
- 安裝與配置
- CentOS 7 安裝 MySQL
- 優化
- 比較全面的MySQL優化參考
- 1、硬件層相關優化
- 1.1、CPU相關
- 1.2、磁盤I/O相關
- 2、系統層相關優化
- 2.1、文件系統層優化
- 2.2、其他內核參數優化
- 3、MySQL層相關優化
- 3.1、關于版本選擇
- 3.2、關于最重要的參數選項調整建議
- 3.3、關于Schema設計規范及SQL使用建議
- 3.4、其他建議
- 后記
- Mysql設計與優化專題
- ER圖,數據建模與數據字典
- 數據中設計中的范式與反范式
- 字段類型與合理的選擇字段類型
- 表的垂直拆分和水平拆分
- 詳解慢查詢
- mysql的最佳索引攻略
- 高手詳解SQL性能優化十條經驗
- 優化SQL查詢:如何寫出高性能SQL語句
- MySQL索引原理及慢查詢優化
- 數據庫SQL優化大總結之 百萬級數據庫優化方案
- 數據庫性能優化之SQL語句優化1
- 【重磅干貨】看了此文,Oracle SQL優化文章不必再看!
- MySQL 對于千萬級的大表要怎么優化?
- MySQL 數據庫設計總結
- MYSQL性能優化的最佳20+條經驗
- 數據操作
- 數據語句操作類型
- DCL
- 修改Mysql數據庫名的5種方法
- DML
- 連接
- 連接2
- DDL
- 數據類型
- 字符集
- 表引擎
- 索引
- MySQL理解索引、添加索引的原則
- mysql建索引的幾大原則
- 淺談mysql的索引設計原則以及常見索引的區別
- 常用工具簡介
- QA
- MySQL主機127.0.0.1與localhost區別總結
- 視圖(view)
- 觸發器
- 自定義函數和存儲過程的使用
- 事務(transaction)
- 范式與反范式
- 常用函數
- MySQL 數據類型 詳解
- Mysql數據庫常用分庫和分表方式
- 隔離級別
- 五分鐘搞清楚MySQL事務隔離級別
- mysql隔離級別及事務傳播
- 事務隔離級別和臟讀的快速入門
- 數據庫引擎中的隔離級別
- 事務隔離級別
- Innodb中的事務隔離級別和鎖的關系
- MySQL 四種事務隔離級的說明
- Innodb鎖機制:Next-Key Lock 淺談
- SQL函數和存儲過程的區別
- mongo
- MongoDB設置訪問權限、設置用戶
- redis
- ORM
- mybatis
- $ vs #
- mybatis深入理解(一)之 # 與 $ 區別以及 sql 預編譯
- 電商設計
- B2C電子商務系統研發——概述篇
- B2C電子商務系統研發——商品數據模型設計
- B2C電子商務系統研發——商品模塊E-R圖建模
- B2C電子商務系統研發——商品SKU分析和設計(一)
- B2C電子商務系統研發——商品SKU分析和設計(二)
- 數據庫命名規范--通用