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

我們聊聊CMU 15445之1 Relational Model

數據庫 其他數據庫
讓我們先忘記 MySQL、PostgreSQL、Oracle 這些知名的數據庫系統,來看看如果是我們自己設計一個數據庫系統,應該怎么做,需要考慮和權衡哪些因素。

什么是數據庫?

數據庫是近幾年來最火熱的基礎軟件領域了,無論是開發者,創業者,投資者,愛好者,投身于數據庫及相關領域的人越來越多。

數據庫無處不在,應用在各個行業領域和方向,并且承擔了十分重要的作用,在如今這個數據爆炸的時代,各種各樣的數據量呈指數級上漲,數據的安全性、可靠性、存儲性能等都有了更高的要求,這也造就了數據庫以及相關領域的繁榮。

什么是數據庫?數據庫(database)可以簡單的認為是一個數據集合,這些數據互相關聯,映射了真實世界的一些數據模型,例如一個班級(class)里的學生(student),學生會選課(student-lesson),老師會上課(teacher-lesson),學生會有考試成績(student-grade),它們相互關聯相互影響。

在數據庫的上層,有提供給用戶查詢數據的語言,最常見的即 SQL(Structured Query Language),這門課程主要專注于如何實現一個功能完備的數據庫系統,而不是教我們如何使用一個數據庫。

設計要點

讓我們先忘記 MySQL、PostgreSQL、Oracle 這些知名的數據庫系統,來看看如果是我們自己設計一個數據庫系統,應該怎么做,需要考慮和權衡哪些因素。

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

圖片

如果我們需要訪問這個數據庫,我們只能加載并解析這個文件,然后逐行尋找所需要的行。

這樣的實現存在什么問題呢?簡單總結大致如下:

數據控制訪問:

  • 如果 album 的 year 字段數據被無效的字符串覆蓋了??如果一條 album 的數據需要對應多個 artist 數據??刪除一條 album 中的數據會怎么樣?

實現細節:

  • 怎么查找到一條記錄??如果有多個線程在同一時刻向文件中寫入數據?

持久性:

  • 如果更新一條數據的時候機器崩潰了??怎樣把數據復制到多臺機器上以獲得高可用特性?

這些問題都是數據庫需要解決的,一個功能完備的數據庫系統需要屏蔽掉所有的細節,讓用戶能夠安心存儲數據、查詢數據,并且不擔心數據丟失等安全問題。

Relational Model

1970 年代,數據存儲并沒有統一的概念和實現,每個應用都需要自己去實現一套數據存儲的方案,這非常不利于應用和程序的移植。于是 Ted Codd 在 1970 年提出了關系模型(relational model)的概念,主要有以下三個關鍵點:

  • 數據存儲在簡單的數據結構中
  • 能夠通過高級語言訪問數據庫
  • 物理存儲的細節交給數據庫管理系統實現

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

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

其中 relational 是最常見、應用最廣泛的關系模型,大多數常見的數據庫系統例如 MySQL、PostgreSQL、Oracle 都是關系模型;K/V、Graph、Document、Column Family 屬于 NoSQL 類型,例如 rocksdb、neo4j、MongoDB、Redis;Array/Matrix 常用于機器學習領域,例如 TileDB;Hierarchical 和 Network 分別代表層次和網狀模型,是很古老的數據模型了,目前已經過時。

relational model 主要有三個關鍵的點:

  • structure:定義關系(relation)的結構、屬性
  • integrity:保證數據庫的數據符合預期的限制,例如一些字段的數據類型限制
  • manipulation:怎樣去訪問和修改數據庫中的數據

其中 relation 可以認為是一張表,一個 tuple 是一個元組,表示一個表中的一條記錄。

一個 relation 通常有一個主鍵(primary key),標識一個唯一的 tuple,大多數的數據庫會自動創建一個內置的主鍵,如果用戶沒有指定主鍵的話。relation 的外鍵(foreign key)通常標識一個 relation 映射到另一個 relation 的 tuple。

這節課主要講述了數據庫需要解決的問題,以及一些設計的要點,然后了解了常見的幾種數據模型,本課程主要專注于關系型數據模型,下節課將會了解下數據庫的操作語言—SQL 的基礎知識。

責任編輯:武曉燕 來源: roseduan寫字的地方
相關推薦

2022-10-09 08:53:06

存儲容量SSD

2022-10-08 00:00:00

SQLDDL數據

2022-10-12 08:52:00

內存緩沖管理

2022-10-17 08:49:47

2022-10-30 10:03:20

B+數據庫數據

2021-02-19 22:18:11

數據庫系統管理

2023-05-29 09:07:10

SQLpageSize主鍵

2023-09-15 06:56:01

RC.NET 6Release

2016-11-28 08:58:43

系統限流算法

2024-07-29 08:24:43

2021-08-05 05:02:04

DPU數據中心Pensando

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2022-05-24 08:21:16

數據安全API

2023-09-10 21:42:31

2021-03-04 08:06:17

Redis面試模型

2023-09-25 09:58:25

AI框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美aⅴ| 亚洲午夜在线 | 中文字幕av一区二区三区 | 久久精品视频一区二区 | 91精品一区二区三区久久久久 | 日韩精品免费在线观看 | 伊人春色成人 | www.4hu影院| 免费一区二区三区在线视频 | 欧美三区视频 | 欧美日韩三级在线观看 | 亚洲九九 | 亚洲av毛片 | 久久久视| 91精品国产综合久久久久久 | 色婷婷精品久久二区二区蜜臂av | 久久99蜜桃综合影院免费观看 | 日韩中文在线视频 | 国产精品毛片一区二区三区 | 黄色一级电影免费观看 | 最新伦理片| 天堂av免费观看 | 久久99精品久久久久久国产越南 | 成人在线观 | 日韩一级免费电影 | 精品一区二区三区在线观看国产 | 亚洲精品视频三区 | 高清国产午夜精品久久久久久 | 欧美日韩国产一区二区三区 | 日本三级在线网站 | 国产免费视频 | 18av在线播放| 欧美一区二区三区免费电影 | 四虎成人精品永久免费av九九 | 欧美日韩一卡 | 国产精品爱久久久久久久 | 国产黑丝在线 | 久久久123 | 播放一级毛片 | 亚洲一区 中文字幕 | 亚洲精品久久久 |