訪問資料庫 訪問資料庫

2021-10-12 13:33:28 字數 1815 閱讀 5510

程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。

而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單:

名字成績

michael99

bob85

bart59

lisa87

michael,99

bob,85

bart,59

lisa,87,,

,你還可以定義各種儲存格式,但是問題來了:

儲存和讀取需要自己實現,json還是標準,自己定義的格式就各式各樣了;

不能做快速查詢,只有把資料全部讀到記憶體中才能自己遍歷,但有時候資料的大小遠遠超過了記憶體(比如藍光電影,40gb的資料),根本無法全部讀入記憶體。

為了便於程式儲存和讀取資料,而且,能直接通過條件快速查詢到指定的資料,就出現了資料庫(database)這種專門用於集中儲存和查詢的軟體。

資料庫軟體誕生的歷史非常久遠,早在2023年資料庫就誕生了。經歷了網狀資料庫,層次資料庫,我們現在廣泛使用的關聯式資料庫是20世紀70年代基於關係模型的基礎上誕生的。

關係模型有一套複雜的數學理論,但是從概念上是十分容易理解的。舉個學校的例子:

假設某個xx省yy市zz縣第一實驗小學有3個年級,要表示出這3個年級,可以在excel中用乙個**畫出來:

每個年級又有若干個班級,要把所有班級表示出來,可以在excel中再畫乙個**:

這兩個**有個對映關係,就是根據grade_id可以在班級表中查詢到對應的所有班級:

也就是grade表的每一行對應class表的多行,在關聯式資料庫中,這種基於表(table)的一對多的關係就是關聯式資料庫的基礎。

根據某個年級的id就可以查詢所有班級的行,這種查詢語句在關聯式資料庫中稱為sql語句,可以寫成:

select * from classes where grade_id = '1';

結果也是乙個表:

grade_id | class_id | name

1 | 11 | 一年級一班

1 | 12 | 一年級二班

1 | 13 | 一年級三班

類似的,class表的一行記錄又可以關聯到student表的多行記錄:

nosql

你也許還聽說過nosql資料庫,很多nosql宣傳其速度和規模遠遠超過關聯式資料庫,所以很多同學覺得有了nosql是否就不需要sql了呢?千萬不要被他們忽悠了,連sql都不明白怎麼可能搞明白nosql呢?

資料庫類別

既然我們要使用關聯式資料庫,就必須選擇乙個關聯式資料庫。目前廣泛使用的關聯式資料庫也就這麼幾種:

付費的商用資料庫:

oracle,典型的高富帥;

sql server,微軟自家產品,windows定製專款;

db2,ibm的產品,聽起來挺高階;

sybase,曾經跟微軟是好**,後來關係破裂,現在家境慘淡。

這些資料庫都是不開源而且付費的,最大的好處是花了錢出了問題可以找廠家解決,不過在web的世界裡,常常需要部署成千上萬的資料庫伺服器,當然不能把大把大把的銀子扔給廠家,所以,無論是google、facebook,還是國內的bat,無一例外都選擇了免費的開源資料庫:

mysql,大家都在用,一般錯不了;

postgresql,學術氣息有點重,其實挺不錯,但知名度沒有mysql高;

sqlite,嵌入式資料庫,適合桌面和移動應用。

作為python開發工程師,選擇哪個免費資料庫呢?當然是mysql。因為mysql普及率最高,出了錯,可以很容易找到解決方法。而且,圍繞mysql有一大堆監控和運維的工具,安裝和使用很方便。

訪問資料庫 資料庫並行訪問

作者姓名 neo chen 陳景峰 暱稱 netkiller 呼號 bg7nyt 手機 86 13113668890 多維度架構 知乎 www.zhihu.com 這裡主要講述有關開發中遇到的資料庫並行問題 防止並行顯示背景 我們有乙個order訂單表,工作流如下 建立訂單 訂單分配 訂單審核 批准...

資料庫訪問

1.sqlcommand 建立sqlconnection的例項 using sqlconnection conn new sqlconnection connectionstring 建立sqlcommand的例項 string sql sql語句 sqlcommand cmd new sqlcom...

訪問資料庫

程式執行的時候,資料都是在記憶體中的。當程式終止的時候,通常都需要將資料儲存到磁碟上,無論是儲存到本地磁碟,還是通過網路儲存到伺服器上,最終都會將資料寫入磁碟檔案。而如何定義資料的儲存格式就是乙個大問題。如果我們自己來定義儲存格式,比如儲存乙個班級所有學生的成績單 名字成績 michael 99bo...