MySQL-01資料庫概述(基礎)

来源:https://www.cnblogs.com/changming06/archive/2023/12/03/17873952.html
-Advertisement-
Play Games

C(Chapter) C-01.資料庫概述 1.為什麼要用資料庫 持久化(persistence):把數據保存到可掉電式存儲設備(硬碟)中以供之後使用。大多數情況下,特別是企業應用,數據持久化是將記憶體中的數據保存到硬碟上加以"固化",而持久化的實現過程大多使用各種關係資料庫來完成。 持久化的主要作用 ...


C(Chapter)

C-01.資料庫概述

1.為什麼要用資料庫

  • 持久化(persistence):把數據保存到可掉電式存儲設備(硬碟)中以供之後使用。大多數情況下,特別是企業應用,數據持久化是將記憶體中的數據保存到硬碟上加以"固化",而持久化的實現過程大多使用各種關係資料庫來完成。
  • 持久化的主要作用是將記憶體中的數據存到關係型資料庫中,當然也可以存儲在磁碟文件,XML數據文件中。

2.資料庫與資料庫管理系統

2.1 資料庫的相關概念

DB:資料庫(Database)。存儲數據的倉庫,其本質是一個文件系統。保存了一系列有組織的數據。
DBMS:資料庫管理系統(Database Management System)。是一種操作和管理資料庫的大型軟體,用於建立,使用和維護資料庫,對資料庫進行統一的管理和控制。用戶通過資料庫管理和訪問資料庫中表的數據。
SQL:結構化查詢語言(Structured Query Language)。專門用來與資料庫交互的語言。

2.2 資料庫和資料庫管理系統的關係

資料庫管理系統(DBMS)可以管理多個資料庫,一般開發人員會針對每一個應用創建一個資料庫。為保存應用中實體的數據,一般會在資料庫中創建多個表,以保存程式中用戶的數據。

3.MySQL優勢

為什麼很多廠商選擇MySQL?
  • 1.開放源代碼,使用成本低。
  • 2.性能卓越,服務穩定。
  • 3.軟體體積小,使用簡單,並且易於維護。
  • 4.歷史悠久,社區用戶活躍,遇到問題容易解決。
  • 5.很多互聯網公司再用,經過了時間的考驗。

4.RDBMS與非RDBMS

RDBMS(Relationship Database Management System)

4.1 關係型資料庫(RDBMS)

4.1.1 實質
  • 關係型資料庫是最古老的資料庫類型,關係型資料庫模型是把複雜的數據結構歸結為簡單的二元關係(二維表格)。
  • 關係型資料庫以行(row)列(column)的形式存儲數據,以便於用戶理解。這一系列的行和列被稱為表(table),一組表組成了一個庫(database)。
  • 表和表之間的數據記錄有關係(relationship)。現實世界里的各種實體以及實體之間的各種關係均用關係模型來表示。關係型資料庫,就是建立在關係模型基礎上的資料庫。
  • SQL就是關係型資料庫的交互語言。
4.1.2 優勢
  • 複雜查詢 可以用SQL語句方便的在一個表以及各個表之間,做非常複雜的數據查詢。
  • 事務支持 使得對於安全性很高的數據訪問要求得以實現。

4.2 非關係型資料庫(非DBMS)

4.2.1 介紹

非關係型資料庫,可以看成關係型資料庫的簡化版本,基於鍵值對存儲數據,不需要經過SQL層的解析,性能非常高。同時,減少了很多不常用的功能,進一步提高了性能。
目前主流的非關係型資料庫都是免費的。

4.2.2 有那些非關係型資料庫

相比於SQL,NoSQL泛指非關係型資料庫,包括了鍵值型資料庫,文檔型資料庫,搜索引擎和列存儲等,還有圖形資料庫。也只有NoSQL才能將這些資料庫都概括。
鍵值型資料庫
鍵值型資料庫,通過key-value鍵值的方式來存儲數據,其中key和value可以是簡單的對象,也可以是複雜的對象。key作為唯一的標識符,優點是查找速度快,而且明顯優於關係型資料庫,確定是無法像關係型資料庫一樣使用條件過濾(比如WHERE),如果不知道去哪裡找數據,就會遍歷所有的鍵,消耗大量的CPU資源。
鍵值型資料庫典型的使用場景就是作為記憶體緩存。Redis是最流行的鍵值型資料庫。
文檔型資料庫
可以存放文檔,可以是xml格式,json格式。再資料庫中文檔作為處理信息的基本單位,一個文檔相當於一條記錄。文檔資料庫所存放的文檔,就相當於鍵值資料庫所存放的值。MongoDB是最流行的文檔型資料庫。此外還有CouchDB等。
搜索引擎資料庫
關係型資料庫雖然採用了索引提升了檢索效率,但是針對全文索引效率卻較低。搜索引擎資料庫是應用在搜索引擎領域的數據存儲形式,由於搜索引擎會爬取大量的數據,並以特定的格式進行存儲,這樣在檢索的時候,才能保證性能最優。核心原理是倒排索引
典型產品:ES(Elasticsearch),Solr,Splunk等。
列式資料庫
列式資料庫是相對於行式存儲的資料庫,Oracle,MySQL,SQL Server等資料庫都是採用的行式存儲(Row-based),而列式資料庫是將數據按照列存儲到資料庫中,這樣做的好處是可以大量降低系統的I/O,適合於分散式文件系統,不足在於功能相對有限。
典型產品:HBase。
圖形資料庫
圖形資料庫,利用了圖這種數據結構存儲了實體(對象)之間的關係,圖形資料庫最典型的例子就是社交網路中人與人的關係,數據模型主要是以節點和邊(關係)來實現,特點在於能高效的解決複雜的關係問題。
圖形資料庫顧名思義,就是一種存儲圖形關係的資料庫,它利用了圖這種數據結構,存儲了實體(對象)之間的關係。關係型數據用於存儲明確關係的數據,但對於複雜關係的數據存儲卻有些力不從心。如社交網路中人物之間的關係,如果使用關係型資料庫會非常複雜,用圖形資料庫將非常簡單。
典型產品:Neo4J,InfoGrid等。

4.2.3 NoSQL的演變

NoSQL對SQL做出了很好的補充,比如實際開發中,有很多業務需求,其實並不需要完整的關係型資料庫功能,非關係型資料庫的功能就足夠使用了。這種情況下,使用性能更高成本更低的的非關係型資料庫當然是更好的選擇,比如:排行榜,定時器等。

5.關係型資料庫設計規則

  • 關係型資料庫的典型數據結構就是數據表,這些數據表的組成都是結構化的(Structured)。
  • 將數據放到表中,表再放到庫中。
  • 一個資料庫中可以有多個表,每個表都有一個名字,用來標識自己。表名具有唯一性。
  • 表具有一些特性,這些特性定義了數據在表中如何存儲,類似Java中“類”的設計。

5.1 表,記錄,欄位

  • E-R(entity-relationship,實體-聯繫),模型中有三個主要概念是:實體集屬性聯繫集
  • 一個實體集(Class)對應資料庫中的一張表(Table),一個實體(Instance)則對應於資料庫表中的一行(Row),也稱為一條記錄(Record)。一個屬性(Attribute)對應於資料庫中的一列(Cloumn),也成為一個欄位(Field)。
  • ORM思想(Object Relational Mapping)體現:資料庫中的一張表 <----> Java中一個類,表中的一條數據 <----> 類的一個對象(實體),
    表中的一個列 <----> 類中的一個欄位,屬性(Field)。

5.2 表的關聯關係

  • 表與表之間的數據記錄有關係。現實世界的實體及實體之間的關係均用關係模型來表示。
  • 四種,一對一關係,一對多關係,多對多關係,自我引用。

學習視頻是尚矽谷宋紅康老師主講的b站視頻,BV1iq4y1u7vj
只是為了記錄自己的學習歷程,且本人水平有限,不對之處,請指正。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 七、標準IO和管道 重定向I/O,為什麼要進行重定向?可以幫我們解決什麼問題? 使用管道符連接命令 1、I/O輸入輸出 顯示器是Linux系統中創建預設的輸出設備 I/O:input和output 重定向:將原本標準設備,替換為我們想要的內容 目的: 在shell腳本中對腳本輸出的內容進行處理,屏蔽 ...
  • 模塊--》文件 包--》文件夾 我們將類似功能的模塊放到一起(包)內,要用時直接導入即可 語法: import 模塊名 as 別名: 》取別名是為了可以節省時間,簡化代碼 import win32process as pro # 以後直接用pro即可 模塊分為三種: 1.內置模塊 2.第三方模塊 3 ...
  • 日誌引擎系列 這些引擎是為了需要寫入許多小數據量(少於一百萬行)的表的場景而開發的。 這系列的引擎有: StripeLog Log TinyLog 共同屬性 引擎: 數據存儲在磁碟上。 寫入時將數據追加在文件末尾。 不支持突變操作,也就是更新。 不支持索引。 這意味著 `SELECT` 在範圍查詢時 ...
  • EXPLAIN 語句來能夠查看某個查詢語句的具體執行計劃,要搞懂 EPLATN 的各個輸出項都有什麼作用,從而可以有針對性的提升查詢語句的性能。通過使用 EXPLAIN 關鍵字可以模擬優化器執行 SQL 查詢語句,從而知道 MySQL 是如何處理 SQL 語句的。分析查詢語句或是表結構的性能瓶頸。 ...
  • 面對今日頭條、抖音等不同產品線的複雜數據質量場景,火山引擎 DataLeap 數據質量平臺如何滿足多樣的需求? ...
  • 如果你是商家,當你要進行廣告投放的時候,假如平臺推送的用戶都是你潛在的買家,那你就可以花更少的錢,帶來更大的收益。這背後有一項技術支撐,那就是用戶畫像。 ...
  • 本文分享自華為雲社區《GaussDB(DWS)查詢優化技術大揭秘》,作者: 胡辣湯。 大數據時代,數據量呈爆髮式增長,經常面臨百億、千億數據查詢場景,當數據倉庫數據量較大、SQL語句執行效率低時,數據倉庫性能會受到影響。本期《GaussDB(DWS)查詢優化技術大揭秘》的主題直播中,我們邀請到華為雲 ...
  • 現代資料庫系統能夠存儲和處理大量數據。因此,由任何一個用戶單獨負責處理與管理資料庫相關的所有活動的情況相對較少。通常,不同的資料庫用戶需要對資料庫的某些部分具有不同級別的訪問許可權:某些用戶可能只需要讀取特定資料庫中的數據,而其他用戶則必須能夠插入新文檔或修改現有文檔。同樣,應用程式可能需要獨特的許可權 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...