更新時間:2020-02-19 09:54:33 來源:動力節點 瀏覽2681次
數據庫選型
首先,我們第一個想到的問題就是我們的數據要存在什么地方?
你可能會說,當然是硬盤上啊。這樣回答也沒有錯,硬盤的確是當下主要的存儲介質,不管是機械硬盤、固態硬盤、磁盤陣列。
然而,我們如果要直接編程操作存儲介質那就太費勁了,于是人們發明了文件系統(也可以說是一種數據庫管理系統)、數據庫管理系統(可能是基于文件系統的),它們都提供相應的編程接口(即API),這樣就能減輕數據庫應用的編程負擔。
但是,就目前來說,數據庫分很多種,文件系統、關系數據庫、NoSQL數據庫等等,而每一種類又有很多具體的數據庫產品,比如關系數據庫就有Oracle、MySQL等等。我們到底要選擇哪一種的哪一款產品呢?
嗯,這就是數據庫選型的問題。它取決于下面的幾個因素:
數據本身的特點,比如數據從哪產生的、產生的頻率多大、產生的數據是什么內容,比如數字、文本、圖片、視頻、音頻、地理位置等;有的數據可以描述一個個現實的實體對象,有的數據描述的是實體對象的行為或者實體對象之間的關系;有的數據可以形成流,有的數據可以形成樹、圖等結構。結構化、半結構化、非結構化這三個概念也是描述數據本身的特點的。事實上,結構化數據基本上可以等同于關系數據,即可以提煉出表及其各個列(即實體及其各個屬性)。
人們使用數據的特點,是一次寫入數據后以后只讀不再更新,還是需要不斷更新該數據,新增數據的頻率是多大,更新數據的頻率是多大,每次讀取、新增、更新的數據量是多少,數據的讀寫分布在某個局部范圍還是均勻分布,是單條處理居多還是批量處理居多,訪問聚合數據居多還是獨立數據居多,是每個數據操作獨立還是往往多個數據操作是一個整體,是同一個數據多個用戶需要訪問還是基本上一個數據就一個用戶訪問等等。
數據庫產品本身的許可類型(License)、價格、特性、性能、穩定性、部署是否容易、擴容成本、運維成本等。
租房網應用的數據庫選型
目前租房網應用的數據主要有兩個,一個是用戶數據,一個是房源數據。用戶數據主要是通過用戶注冊添加的,但目前租房網應用并沒有這個功能。房源數據也是用戶發布而添加的,租房網應用同樣還沒有這個功能。
很明顯,用戶和房源很容易映射到現實中的實體,一個用戶具有用戶名和密碼等屬性,一個房源具有位置、房主、其他具體情況等靜態信息(事實上,這些應該算是房產的屬性,房產只有在需要出租出去的時候才成為房源,房源應該是房產的其中某種狀態,但我們先不用搞這么復雜,就先這么統一對待吧),以及發布時間、發布者等動態/行為信息。
它們都是用戶通過瀏覽器添加到我們的數據庫中的,數據量應該也不會太大。后續的數據訪問也主要是以讀操作為主,短時間內訪問量也不會太大。當然這個跟你對應用的定位有關,你如果希望應用迅速火爆起來,必然要實施各種營銷和推廣措施,這樣的話短時間內數據量和訪問量可能快速增長。
既然如此,我們完全可以采用關系數據庫來解決數據的持久化問題。事實上,大多數Web應用都可以采用關系數據庫,或者至少先拿關系數據庫來嘗試一下,那些所謂的大數據只存在于少數巨頭互聯網公司。
另外,開發環境和測試環境、生產環境的數據庫應該不一樣。在開發環境,我們最好選擇不需要單獨部署數據庫服務器的數據庫產品,否則,開發受限太多,既要部署數據庫服務器,還受網絡情況等影響,單元測試也不容易做。
測試環境和生產環境的數據庫應該選擇同款數據庫才對。
所以,在租房網應用的開發環境中,我選擇的是H2Database(可以參考這篇文章),直接在工程中添加它的一個JAR包即可。至于測試環境和生產環境,那就不作考慮了,畢竟它只是用來演示的,又不是真的要上線運營。
數據庫設計
選定好了數據庫,我們需要根據該數據庫產品進行設計。
簡單來說,對于關系數據庫,我們就是要設計數據庫中存在哪些表,每張表的各個列是什么,每個列的數據類型和約束是什么,是否要建立索引等等。
但事實上,要想進行數據庫設計,一般先要對我們的業務、數據進行分析,實際上也屬于需求分析的范疇。分析的方法也有很多,大家可以自行查閱相關資料。
當然,關系數據庫的設計形成了比較系統的理論,什么關系模型、關系代數、關系演算、三范式、完整性約束等等,這里就不再贅述了。
當然,數據庫設計可以采用文檔工具記錄下來,也可以采用所選定的數據庫管理系統直接設計,也可以采用專業的第三方產品比如PowerDesigner等。
而設計也會有相應的方法論、理論、原則、規范等,這個也需要經過學習、實踐、思考、總結等成長四步而沉淀到個人的,這里也不再贅述了。
一句話,方法論和工具都很重要。
租房網的數據庫設計
至于我們的租房網,我們就繼續采用簡單、夠用為原則,目前涉及到的數據就是用戶數據和房源數據,那就設計用戶表和房源表。
用戶表設計三個列,一列是用戶ID,一旦生成就不再變;一列是用戶名;一列是密碼。三個列都是字符串類型,但長度可以限制在某個固定長度,表的主鍵就是用戶ID。實際上密碼不能明文存儲到數據庫中,而是需要加密存儲。
房源表也設計三個列吧,分別是房源ID、房源名稱、房源詳情,也都是字符串類型,但房源詳情可以采用變長字符串,長度可以大一些,200、500都可以,但也不可過大,表的主鍵是房源ID。
這都是粗略的設計,僅用作演示我們開發基于數據庫的應用是需要這么一步的,并不符合現實的需求,如果有需要,后面可以改進以符合現實的需求。
在測試環境和生產環境中,往往需要由數據庫管理員(即DBA)來建立數據庫、數據表,分配相應的權限,包括數據庫用戶名和密碼,甚至是部署獨立的數據庫服務器。
在開發環境中,一般是采用嵌入式的數據庫,建庫、建表、添加測試數據等都是自己執行SQL腳本或編程來實現。
編寫訪問數據庫的代碼
這一步往往依賴于某個庫。
在Java中,JDBC是最常用的數據庫訪問API,而它僅僅是個接口規范,實際上還需要具體某個支持JDBC的數據庫產品提供的驅動包,它本質上就包含JDBC各個接口的實現類。
還記得這篇文章中提到的接口的作用和使用模式嗎?
JDBC基本上也是遵從這種方式,上面的某個接口可以替換成JDBC中的某個接口,底下的實現類就是各個數據庫廠商提供的驅動里面相應于該接口的某個實現類,上面使用該接口的外部程序就是我們的Web應用程序了,它僅僅使用JDBC接口而已,但實際運行時需要配置一個具體的數據庫驅動(即JDBC的實現),這其實就是數據庫驅動加載,后面再詳細介紹。
當然,直接使用JDBC可能比較復雜,于是很多第三方廠商又將JDBC進行了封裝,比如Spring就提供了JDBCTemplate來簡化JDBC的操作,還有很多ORM(ObjectRelationalMapping,簡稱ORM,對象關系映射)框架也提供了某個方面的封裝,這些以后再詳細介紹。
數據庫相關視頻教程
oracle數據庫教程:http://www.ilovecolors.com.cn/v22/
數據庫plsql教程:http://www.ilovecolors.com.cn/v23/
jdbc數據庫教程:http://www.ilovecolors.com.cn/v24/
數據庫mysql教程:http://www.ilovecolors.com.cn/v21
Java實戰項目視頻之egov項目視頻教程【免費下載】:http://www.ilovecolors.com.cn/v83/
Java學生成績管理系統視頻教程【免費下載】:http://www.ilovecolors.com.cn/v51/
以上就是動力節點Java培訓機構小編介紹的“應用的開發步驟,Java數據庫編程教程”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習