前段時間因為項目需要搭建一個web服務(wù)器,后端Web框架我調(diào)研了幾個,比如Python的Flask,Django,
NodeJs的Express,JavaEE的Spring,以及C++的CppCMS, 經(jīng)過權(quán)衡拓展性開發(fā)效率,最后選擇了Django。
也許Python不是最好的選擇,但至少目前來看工作的還挺順利。

但是當(dāng)時對于數(shù)據(jù)庫的選擇,卻走了一點彎路。因為平時對于數(shù)據(jù)庫接觸不多,所以一開始選擇了MongoDB
作為數(shù)據(jù)庫。這在初期是沒啥問題的,但后來隨著項目推進(jìn),產(chǎn)品經(jīng)理不斷地增加需求(我要...我要...我還要...),
數(shù)據(jù)庫中各個collection的耦合讀也越來越高,甚至同一個collection也有大量的冗余數(shù)據(jù)。雖然也有辦法進(jìn)行優(yōu)化,
但是我經(jīng)過查閱資料和進(jìn)度考量,最后還是決定趁著項目尚未release,將NoSQL替換為關(guān)系型的數(shù)據(jù)庫。

關(guān)系數(shù)據(jù)庫簡介

關(guān)系數(shù)據(jù)庫由由埃德加·科德(IBM)在1969年左右提出。自推出后就成為商業(yè)應(yīng)用的主要數(shù)據(jù)庫模型(與其他數(shù)據(jù)庫模型,
如分級,網(wǎng)絡(luò)或?qū)ο竽P拖啾龋?。如今已有許多商業(yè)關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),如Oracle,IBM DB2和Microsoft SQL Server等。
也有許多免費的開源關(guān)系數(shù)據(jù)庫,如MySQL,mSQL(mini-SQL)和嵌入式JavaDB(Apache Derby)等。

關(guān)系數(shù)據(jù)庫將數(shù)據(jù)存儲在表(table)中。一個表由行和列組成。行稱為記錄(record)或元組(tuple),列稱為字段(field)或?qū)傩?attribute)。
數(shù)據(jù)庫的表類似于電子表格。不過關(guān)系數(shù)據(jù)庫可以在這些表格中產(chǎn)生關(guān)聯(lián),使得可以有效地存儲大量的數(shù)據(jù),以及高效地檢索數(shù)據(jù)。

SQL(結(jié)構(gòu)化查詢語言)通常用來對關(guān)系數(shù)據(jù)庫進(jìn)行操作。

關(guān)系數(shù)據(jù)庫設(shè)計步驟

數(shù)據(jù)庫的設(shè)計對經(jīng)驗的要求比理論要高,因為你必須作出許多選擇。數(shù)據(jù)庫通常是為了某種應(yīng)用的需求而高度定制的,因此,
通常在數(shù)據(jù)庫設(shè)計的指導(dǎo)里,通常都是指出不要做什么而不是

網(wǎng)友評論