資料庫最基本原理

来源:http://www.cnblogs.com/zhouguanglin/archive/2017/07/26/7241211.html
-Advertisement-
Play Games

資料庫 資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存 ...


資料庫  

       資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用。
在信息化社會,充分有效地管理和利用各類信息資源,是進行科學研究和決策管理的前提條件。資料庫技術是管理信息系統、辦公自動化系統、決策支持系統等各類信息系統的核心部分,是進行科學研究和決策管理的重要技術手段。

主要特點

⑴ 實現數據共用
數據共用包含所有用戶可同時存取資料庫中的數據,也包括用戶可以用各種方式通過介面使用資料庫,並提供數據共用。
⑵ 減少數據的冗餘度
同文件系統相比,由於資料庫實現了數據共用,從而避免了用戶各自建立應用文件。減少了大量重覆數據,減少了數據冗餘,維護了數據的一致性。
⑶ 數據的獨立性
數據的獨立性包括邏輯獨立性(資料庫中資料庫的邏輯結構和應用程式相互獨立)和物理獨立性(數據物理結構的變化不影響數據的邏輯結構)。
⑷ 數據實現集中控制
文件管理方式中,數據處於一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關係。利用資料庫可對數據進行集中控制和管理,並通過數據模型表示各種數據的組織以及數據間的聯繫。
⑸數據一致性和可維護性,以確保數據的安全性和可靠性
主要包括:①安全性控制:以防止數據丟失、錯誤更新和越權使用;②完整性控制:保證數據的正確性、有效性和相容性;③併發控制:使在同一時間周期內,允許對數據實現多路存取,又能防止用戶之間的不正常交互作用。
⑹ 故障恢復
由資料庫管理系統提供一套方法,可及時發現故障和修複故障,從而防止數據被破壞。資料庫系統能儘快恢複數據庫系統運行時出現的故障,可能是物理上或是邏輯上的錯誤。比如對系統的誤操作造成的數據錯誤等。

RDBMS(關係型資料庫)和NoSQL(非關係型資料庫)

關係型資料庫

        關係資料庫,是建立在關係模型基礎上的資料庫,藉助於集合代數等數學概念和方法來處理資料庫中的數據。現實世界中的各種實體以及實體之間的各種聯繫均用關係模型來表示。關係模型是由埃德加·科德於1970年首先提出的,並配合“科德十二定律”。現如今雖然對此模型有一些批評意見,但它還是數據存儲的傳統標準。標準數據查詢語言SQL就是一種基於關係資料庫的語言,這種語言執行對關係資料庫中數據的檢索和操作。 關係模型由關係數據結構、關係操作集合、關係完整性約束三部分組成。

RDBMS 
- 高度組織化結構化數據 
- 結構化查詢語言(SQL) (SQL) 
- 數據和關係都存儲在單獨的表中。 
- 數據操縱語言,數據定義語言 
- 嚴格的一致性
- 基礎事務

NoSQL(非關係型資料庫)

        NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是SQL"。,泛指非關係型的資料庫。隨著互聯網web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS類型的web2.0純動態網站已經顯得力不從心,暴露了很多難以剋服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。NoSQL資料庫的產生就是為瞭解決大規模數據集合多重數據種類帶來的挑戰,尤其是大數據應用難題。

NoSQL 
- 代表著不僅僅是SQL
- 沒有聲明性查詢語言
- 沒有預定義的模式
-鍵 - 值對存儲,列存儲,文檔存儲,圖形資料庫
- 最終一致性,而非ACID屬性
- 非結構化和不可預知的數據
- CAP定理 
- 高性能,高可用性和可伸縮性

關係型資料庫遵循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) 持久性

持久性是指一旦事務提交後,它所做的修改將會永久的保存在資料庫上,即使出現宕機也不會丟失。

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 在app 註冊或者登錄 需要驗證碼的地方、為了避免短時間內刷驗證碼、往往會加上一層驗證。 倒計時結束後、可以重新獲取! 代碼實現如下: ...
  • 所謂原型,無非就是一座溝通之橋,是交互設計師與PD、PM、網站開發工程師溝通的最好工具。作為產品面世之前的框架,僅僅利用模塊、元素、線框來表達勢必會造成溝通效率低下的問題。與其浪費時間去一一詢問細節,倒不如直接在原型中進行批註和審閱,一站式的將產品的概念和構想以最簡單明瞭的方式展現給開發者或設計師, ...
  • 常見ADB命令 比如說知道了push和pull操作,就可以實現一個簡單的手機助手。 如果有多台設備,操作的時候要指定設備。 -s加設備名稱 ...
  • 一,效果圖。 二,工程圖。 三,代碼。 ViewController.h ViewController.m ...
  • 優化資料庫的方法有很多,最近在看面試題,總結了一些優化資料庫的方法。 優化資料庫的方法1、選取最適用的欄位屬性MySQL可以很好的支持大數據量的存取,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在創建表的時候,為了獲得更好的性能,我們可以將表中欄位的寬度設得儘可能小。例如,在 ...
  • #使用資料庫USE db_student; #創建表create table `t_grade` ( `id` int PRIMARY KEY auto_increment NOT NULL, `stuName` varchar (60), `course` varchar (60), `score ...
  • 一、資料庫事務隔離級別 資料庫事務的隔離級別有4個,由低到高依次為Read uncommitted 、Read committed 、Repeatable read 、Serializable ,這四個級別可以逐個解決臟讀 、不可重覆讀 、幻讀 這幾類問題。 √: 可能出現 ×: 不會出現 臟讀 不 ...
  • 一、複製的意義 mysql的複製功能是構建基於MySql大規模,高性能應用的基礎,我們可以通過為伺服器配置一個或多個備庫來進行數據同步;複製功能不僅有利於構建高性能的應用,同時也是高可用性,可擴展行,災難恢復,備份以及數據倉庫等工作的基礎 二、複製的方式 Mysql支持3種方式:基於語句的複製、基於 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...