成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們聊聊CMU 15445之1 Relational Model

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
讓我們先忘記 MySQL、PostgreSQL、Oracle 這些知名的數(shù)據(jù)庫(kù)系統(tǒng),來(lái)看看如果是我們自己設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),應(yīng)該怎么做,需要考慮和權(quán)衡哪些因素。

什么是數(shù)據(jù)庫(kù)?

數(shù)據(jù)庫(kù)是近幾年來(lái)最火熱的基礎(chǔ)軟件領(lǐng)域了,無(wú)論是開(kāi)發(fā)者,創(chuàng)業(yè)者,投資者,愛(ài)好者,投身于數(shù)據(jù)庫(kù)及相關(guān)領(lǐng)域的人越來(lái)越多。

數(shù)據(jù)庫(kù)無(wú)處不在,應(yīng)用在各個(gè)行業(yè)領(lǐng)域和方向,并且承擔(dān)了十分重要的作用,在如今這個(gè)數(shù)據(jù)爆炸的時(shí)代,各種各樣的數(shù)據(jù)量呈指數(shù)級(jí)上漲,數(shù)據(jù)的安全性、可靠性、存儲(chǔ)性能等都有了更高的要求,這也造就了數(shù)據(jù)庫(kù)以及相關(guān)領(lǐng)域的繁榮。

什么是數(shù)據(jù)庫(kù)?數(shù)據(jù)庫(kù)(database)可以簡(jiǎn)單的認(rèn)為是一個(gè)數(shù)據(jù)集合,這些數(shù)據(jù)互相關(guān)聯(lián),映射了真實(shí)世界的一些數(shù)據(jù)模型,例如一個(gè)班級(jí)(class)里的學(xué)生(student),學(xué)生會(huì)選課(student-lesson),老師會(huì)上課(teacher-lesson),學(xué)生會(huì)有考試成績(jī)(student-grade),它們相互關(guān)聯(lián)相互影響。

在數(shù)據(jù)庫(kù)的上層,有提供給用戶(hù)查詢(xún)數(shù)據(jù)的語(yǔ)言,最常見(jiàn)的即 SQL(Structured Query Language),這門(mén)課程主要專(zhuān)注于如何實(shí)現(xiàn)一個(gè)功能完備的數(shù)據(jù)庫(kù)系統(tǒng),而不是教我們?nèi)绾问褂靡粋€(gè)數(shù)據(jù)庫(kù)。

設(shè)計(jì)要點(diǎn)

讓我們先忘記 MySQL、PostgreSQL、Oracle 這些知名的數(shù)據(jù)庫(kù)系統(tǒng),來(lái)看看如果是我們自己設(shè)計(jì)一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),應(yīng)該怎么做,需要考慮和權(quán)衡哪些因素。

最直觀的想法,可以將數(shù)據(jù)存儲(chǔ)到一個(gè) CSV 文件當(dāng)中,文件中的每一行就是一條記錄,每個(gè)文件中存儲(chǔ)的是同一類(lèi)數(shù)據(jù),例如我們有兩類(lèi)數(shù)據(jù),歌手(artist) 和 唱片(album),artist 的數(shù)據(jù)有三個(gè)屬性,分別是歌手的名字、出生年、國(guó)家,album 的數(shù)據(jù)也有三個(gè)屬性,唱片名字、屬于哪個(gè)歌手、發(fā)行年份,數(shù)據(jù)存儲(chǔ)如下所示:

圖片

如果我們需要訪問(wèn)這個(gè)數(shù)據(jù)庫(kù),我們只能加載并解析這個(gè)文件,然后逐行尋找所需要的行。

這樣的實(shí)現(xiàn)存在什么問(wèn)題呢?簡(jiǎn)單總結(jié)大致如下:

數(shù)據(jù)控制訪問(wèn):

  • 如果 album 的 year 字段數(shù)據(jù)被無(wú)效的字符串覆蓋了??如果一條 album 的數(shù)據(jù)需要對(duì)應(yīng)多個(gè) artist 數(shù)據(jù)??刪除一條 album 中的數(shù)據(jù)會(huì)怎么樣?

實(shí)現(xiàn)細(xì)節(jié):

  • 怎么查找到一條記錄??如果有多個(gè)線程在同一時(shí)刻向文件中寫(xiě)入數(shù)據(jù)?

持久性:

  • 如果更新一條數(shù)據(jù)的時(shí)候機(jī)器崩潰了??怎樣把數(shù)據(jù)復(fù)制到多臺(tái)機(jī)器上以獲得高可用特性?

這些問(wèn)題都是數(shù)據(jù)庫(kù)需要解決的,一個(gè)功能完備的數(shù)據(jù)庫(kù)系統(tǒng)需要屏蔽掉所有的細(xì)節(jié),讓用戶(hù)能夠安心存儲(chǔ)數(shù)據(jù)、查詢(xún)數(shù)據(jù),并且不擔(dān)心數(shù)據(jù)丟失等安全問(wèn)題。

Relational Model

1970 年代,數(shù)據(jù)存儲(chǔ)并沒(méi)有統(tǒng)一的概念和實(shí)現(xiàn),每個(gè)應(yīng)用都需要自己去實(shí)現(xiàn)一套數(shù)據(jù)存儲(chǔ)的方案,這非常不利于應(yīng)用和程序的移植。于是 Ted Codd 在 1970 年提出了關(guān)系模型(relational model)的概念,主要有以下三個(gè)關(guān)鍵點(diǎn):

  • 數(shù)據(jù)存儲(chǔ)在簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)中
  • 能夠通過(guò)高級(jí)語(yǔ)言訪問(wèn)數(shù)據(jù)庫(kù)
  • 物理存儲(chǔ)的細(xì)節(jié)交給數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn)

數(shù)據(jù)模型(data model)指的是描述數(shù)據(jù)庫(kù)中數(shù)據(jù)的概念集合,常見(jiàn)的數(shù)據(jù)模型有以下幾種:

  • Relational
  • Key/Value
  • Graph
  • Document
  • Column-family
  • Array / Matrix
  • Hierarchical
  • Network

其中 relational 是最常見(jiàn)、應(yīng)用最廣泛的關(guān)系模型,大多數(shù)常見(jiàn)的數(shù)據(jù)庫(kù)系統(tǒng)例如 MySQL、PostgreSQL、Oracle 都是關(guān)系模型;K/V、Graph、Document、Column Family 屬于 NoSQL 類(lèi)型,例如 rocksdb、neo4j、MongoDB、Redis;Array/Matrix 常用于機(jī)器學(xué)習(xí)領(lǐng)域,例如 TileDB;Hierarchical 和 Network 分別代表層次和網(wǎng)狀模型,是很古老的數(shù)據(jù)模型了,目前已經(jīng)過(guò)時(shí)。

relational model 主要有三個(gè)關(guān)鍵的點(diǎn):

  • structure:定義關(guān)系(relation)的結(jié)構(gòu)、屬性
  • integrity:保證數(shù)據(jù)庫(kù)的數(shù)據(jù)符合預(yù)期的限制,例如一些字段的數(shù)據(jù)類(lèi)型限制
  • manipulation:怎樣去訪問(wèn)和修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)

其中 relation 可以認(rèn)為是一張表,一個(gè) tuple 是一個(gè)元組,表示一個(gè)表中的一條記錄。

一個(gè) relation 通常有一個(gè)主鍵(primary key),標(biāo)識(shí)一個(gè)唯一的 tuple,大多數(shù)的數(shù)據(jù)庫(kù)會(huì)自動(dòng)創(chuàng)建一個(gè)內(nèi)置的主鍵,如果用戶(hù)沒(méi)有指定主鍵的話(huà)。relation 的外鍵(foreign key)通常標(biāo)識(shí)一個(gè) relation 映射到另一個(gè) relation 的 tuple。

這節(jié)課主要講述了數(shù)據(jù)庫(kù)需要解決的問(wèn)題,以及一些設(shè)計(jì)的要點(diǎn),然后了解了常見(jiàn)的幾種數(shù)據(jù)模型,本課程主要專(zhuān)注于關(guān)系型數(shù)據(jù)模型,下節(jié)課將會(huì)了解下數(shù)據(jù)庫(kù)的操作語(yǔ)言—SQL 的基礎(chǔ)知識(shí)。

責(zé)任編輯:武曉燕 來(lái)源: roseduan寫(xiě)字的地方
相關(guān)推薦

2022-10-09 08:53:06

存儲(chǔ)容量SSD

2022-10-08 00:00:00

SQLDDL數(shù)據(jù)

2022-10-12 08:52:00

內(nèi)存緩沖管理

2022-10-17 08:49:47

2022-10-30 10:03:20

B+數(shù)據(jù)庫(kù)數(shù)據(jù)

2021-02-19 22:18:11

數(shù)據(jù)庫(kù)系統(tǒng)管理

2023-09-15 06:56:01

RC.NET 6Release

2023-05-29 09:07:10

SQLpageSize主鍵

2016-11-28 08:58:43

系統(tǒng)限流算法

2024-07-29 08:24:43

2021-08-05 05:02:04

DPU數(shù)據(jù)中心Pensando

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2021-03-04 08:06:17

Redis面試模型

2023-09-25 09:58:25

AI框架
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 毛片免费观看视频 | 国产高清精品一区二区三区 | 精品国产乱码久久久久久丨区2区 | 超碰免费观看 | 免费观看av | 在线免费激情视频 | 国产免费一区二区三区 | 亚洲一区二区三区在线 | 国产视频久久 | 91网视频| 国产一区二区精华 | 欧美性另类| 国产一级片免费在线观看 | 九九在线视频 | 在线观看国产h | 国产成人亚洲精品 | 日韩欧美一区二区三区免费观看 | 九九久久99 | 久久9视频 | 精品欧美黑人一区二区三区 | 亚洲一区中文字幕在线观看 | 99精品视频网| 欧美亚洲国语精品一区二区 | 国产剧情一区 | 久久久久久久久久久久91 | 秋霞电影一区二区三区 | 欧美中文字幕一区 | 国产欧美日韩精品在线观看 | 2一3sex性hd| 日本天天操| 一级做a| 日韩精品二区 | 在线国产一区二区 | 天天操网 | 亚洲视频一区在线 | 国产成人精品在线 | 亚洲精品久久 | 久久精品国产免费看久久精品 | 精品久久av| 欧洲精品久久久久毛片完整版 | 蜜桃在线视频 |