C# 數據操作系列 – 0. 序言

0. 前言

在上一個系列中,我們初步瀏覽了一下C#的基礎知識。這句話的意思就是C#基礎知識系列完結了,撒花。當然,並不是因為C#已經講完了。正是因為我們輕輕地叩開了那扇門,才能看到門後面那瑰麗的世界。那麼,門後面有什麼?就讓我在後續的篇幅里,帶著大家一起瀏覽吧。

0.1 C# 能做什麼

之前在開發工具篇大概為大家介紹了.net 分的方向,.net framework,.net core,mono,UWP 這四個。嚴格講這不是技術區分的方向,而是基於SDK的區分。

說起能完成的功能,接下來給大家看一個圖:

image-20200508193704447

這是微軟官網對.net能做的事情一個整體的描述。當然,其中某些方向暫時只能在Visual Studio上開發,所以需要Windows系統。當然了,並不是一直都只能在Windows下開發。微軟正在一步一步的遷移到.net core或者說是.net standard(標準)上。

說到這裡,重新介紹一下.net standard和.net framework以及.net core的區別吧。

.net standard也叫 dotnet 標準,是一套正式的.net API規範,進一步提高.net生態的一致性。而.net core正是在.net standard體系下的一個產物。

所以我們大概總結一下C#能做什麼吧:

  1. 網站
  2. 桌面應用
  3. 遊戲
  4. 微服務應用
  5. 手機APP
  6. 人工智慧
  7. 物聯網

嗯,基本是涵蓋了互聯網絕大多數的項目類別,所以C#的前景還是可以的。

0.2 什麼是資料庫

資料庫的英文名字是Database,是指按照數據結構來組織、管理數據的倉庫。而我們常說的資料庫還有另外一種意思,指資料庫管理系統,也就是 Database Management System,用來高效地管理、獲取數據。

所以,我們平時在使用資料庫的時候,會同時搭配資料庫管理系統進行。當然,對於一個開發而言,並不需要精通資料庫管理系統,這部分的工作屬於DBA(Database Administrator,資料庫管理員)的。

1. 常用資料庫

很多時候說到資料庫的時候,其實一般指的都是關係型資料庫。近年來,因為高並發和大數據時代的到來,關係型資料庫無法很好地滿足需求,於是大牛們研究出了非關係型資料庫。

1.1 關係型資料庫

關係型資料庫(Relational Database),是指使用關係模型來組織數據的資料庫,最大的特徵就是以行的形式表示實體,以列的形式表示實體的欄位,一張表為一組實體,多張表聯合起來就組成了一個資料庫。

這裡簡單介紹一下 關係型資料庫的幾大巨頭:

1. Microsoft SQL Server:

微軟開發的資料庫,早期版本只支援Windows環境,而且安裝簡單,性能和維護相對不錯,然後被中小企業所接受並使用。在前幾年,微軟為Linux開發了對應的版本,甚至增強了企業級性能。在SQL Server2019之前的版本,SQL Server對應的管理程式 SQL Server Management Studio 是與資料庫安裝鏡像一起的,可以在安裝資料庫的時候直接安裝。在2019,則取消了SQL Server Management Studio 與安裝包的掛鉤,用戶就可以自行安裝SQL Server Management Studio程式。

image-20200508233740733

這是微軟給出的宣傳亮點。

MS SQL Server是收費的,而且正版的費用不是很便宜,但對於普通開發而言,有科學方式(微軟一概在這方面特別大方)來免費試用旗艦版。

image-20200508234257861

當然了,MS SQL Server還有兩個不收費的版本,不過功能不如旗艦版的全:

image-20200508234341659

所以對於一個獨立項目或者中小型企業而言不失為一個好的選擇。

2. Oracle資料庫

最出名的企業級資料庫,與MS SQL Server不同的是,Oracle從出生就備受企業級應用的青睞。其獨到的特性支援和資料庫DBMS,以及它強大的性能,都是決定性的亮點。

但Oracle資料庫也是一個對開發者不太友好的資料庫。因為如果開發者如果需要安裝的話,需要在Oracle官網有一個帳號。然後下載兩個安裝包,總計4G左右。安裝過程十分複雜,稍有不慎就需要卸載已安裝完成的配件接著重新安裝。

嗯,最重要的一點是,企業使用收費。

image-20200509001402138

點擊下載後,如果沒登陸的話,會跳轉到這個頁面

image-20200509001506067

3.MySQL

說到資料庫,根本沒法繞過MySQL。MySQL之前是一個開源的資料庫,所有人都可以正常使用,不需要像Oracle一樣 註冊帳號。MySQL提供了一個收費版和一個社區版(免費版)。可以說是一個十分適合初學者的資料庫,甚至因為其開源的特性,使得眾多廠商都可以根據自己的業務邏輯從新發布一個MySQL的版本。

這是它版本的部分區別:

image-20200509003018332

MySQL後來被Oracle公司收購了,維護和更新就變得有點迷。因為Oracle的名聲不太好,再加上Oracle對MySQL並不上心,就有大神依賴於MySQL的源碼重新搞了MariaDB。

4.MariaDB

MariaDB是MySQL的一個復刻版。出於對Oracle一概名聲的信任,當時MySQL原始開發組的一批小夥伴覺得搞一個基於GNU GPL下的開源項目來。

MariaDB的API和命令與MySQL完全一致,但是MariaDB更換了數據引擎。

1.2 非關係型資料庫

NOSQL(Not only sql)是對不同於傳統關係型資料庫的統稱。這是近幾年興起的概念,裡面有很多後起之秀。

當代典型的關係資料庫在一些數據敏感的應用中表現了糟糕的性能,例如為巨量文檔創建索引、高流量網站的網頁服務,以及發送流式媒體[5]。關係型資料庫的典型實現主要被調整用於執行規模小而讀寫頻繁,或者大批量讀而極少寫訪問的事務。

NOSQL的結構通常提供弱一致性的保證,如最終一致性,或交易僅限於單個的數據項。不過,有些系統,提供完整的ACID保證在某些情況下,增加了補充中間件層(例如:CloudTPS)[6]。有兩個成熟的系統有提供快照隔離的列存儲:像是Google基於過濾器系統的BigTable[7],和滑鐵盧大學開發的HBase[8]。這些系統,自主開發,使用類似的概念來實現多行(multi-row)分散式ACID交易的快照隔離(snapshot isolation)保證為基礎列存儲,無需額外的數據管理開銷,中間件系統部署或維護,減少了中間件層。

少數NOSQL系統部署了分散式結構,通常使用分散式散列表(DHT)將數據以冗餘方式保存在多台伺服器上。依此,擴充系統時候添加伺服器更容易,並且擴大了對伺服器失效的承受能程度。

以上內容來源於維基百科。

關於非關係型資料庫後續也會進行介紹,現在就淺藏輒止吧。

2. 總結

本篇是《C# 數據訪問系列》的開篇,在這裡簡單介紹了一下資料庫有哪些和一些簡單的區分。這個系列主要講C# 通過ADO.NET 、EF、Nhibernate等ORM(對象關係映射)框架訪問和操作數據。

下一篇將簡單介紹一下SQL以及常用SQL的寫法。

更多內容煩請關注我的部落格《高先生小屋》

file

Tags: