一、做一個涉及數據庫的軟件,用什么編程語言或者什么軟件
數據量不大,數據庫用MySQL就足夠了。開發語言你想用什么語言基本都可以,就看你熟悉哪種。根據你的描述,要多人同時編輯的話,肯定要幾臺可操作的機子聯網,如果局域網內環境安全的可以考慮本機搭建一個服務器,用網頁形式做前臺窗口再去服務器讀寫數據,優點搭建環境快捷,開發環境記事本也可以。如果覺得網頁形式不好,想做成App,可以考慮用ActionScript,在flash上編程,優點,開發環境不講究的下載個flash就可以,而且最主要是編輯可視化窗口簡單直觀,非常適合小工具的開發。
數據庫的核心組件有哪些
為了實現這些核心功能,通常數據庫會包括以下核心組件:
a. 存儲管理
數據用什么樣的方式來組織、存儲,是key-value還是關系型,是按行存還是按列存,支不支持壓縮,支不支持刪除和修改,支持什么樣的數據類型和存儲接口,Posix還是對象存儲。是否要支持計算存儲分離,是否要支持分布式存儲,是否支持事物處理,是否支持多副本,采用什么算法來加速數據的檢索(索引)等等。存儲管理是數據庫的核心組件,解決了存儲管理問題,數據庫的問題就解決了一半了。
b. 查詢優化器
要提高數據查詢的效率,數據庫必須找到一條優異化的執行路徑,比如,查詢時是否需要使用索引,如果有多個索引,應該選擇哪一個,如果數據分布在不同的存儲單元(表、集合等)里,應該按照什么順序來訪問效率較高等等。優化器面對的問題可能是一個極其復雜的路徑規劃問題,需要它在很短的時間里計算出優異路徑,需要大量核心優化算法。屬于數據庫中復雜程度較高的部分。
舉個例子,你要帶著全家人,包括老人、小孩一起從上海去海南旅行,要制作一個性價比較好、家人滿意度較高的計劃,那么在計劃時需要考慮哪些因素呢,首先,怎么去,是開車去,還是火車去,還是飛機去。開車,路上要花多久,中間需要休息幾次,你和太太有沒有時間,老人孩子是不是受得了,汽油費用,過路費用;飛機,怎么去機場,行李有多少,帶不帶的下,機票有沒有打折,下了飛機怎么辦等等。住什么酒店,去什么景點,老人喜歡去人多的人文景觀,太太喜歡安靜的地方和方便購物的地方,小孩喜歡有游樂場的地方,要不要酒店+景點一起訂,會不會有優惠,要不要租車,租什么車…說到這里,是不是可以體會一個查詢優化器需要考慮的問題有多少?
當然,這部分工作可以有相對簡單的實現(基于規則),比如太太說了,時間確定、飛機來回、五星酒店、帶私人沙灘。這樣計劃就會簡單很多,也可以復雜到難以想象(基于機器學習、基于實際開銷等等),太太說你全權負責,具體時間不確定,大概在8月-9月,要少花錢多辦事,多做調研,找一個優異方案。那么做這個計劃就會非常復雜,需要的支持決策信息就會非常多。這樣做出來的決策大概率相對會優化,比基于規則實現的計劃能適應更多場景。
c. 執行模塊
優化器做好了執行計劃后,接下來就會有執行的模塊按照執行計劃對數據進行相關的計算,包括數據的存取、常規的加減乘除、排序、平均值、哈希,也會包括一些機器學習的算法,數據的壓縮/解壓縮,最后將計算完成的結果返回給客戶端。
d. 內部管理和調度
數據庫要正常的工作,還會需要一些內部協調管理的模塊,比如,內存和存儲同步,存儲空間整理,元數據管理,集群狀態檢測,容錯和故障恢復等。
e. 管理工具和接口
為了提高易用性,數據庫都需要提供一套管理工具,比如備份/恢復、狀態檢測、運行時監控、資源隔離、權限管理、安全審計、自定義接口、各種數據訪問接口等。
延伸閱讀:
二、什么是數據庫
數據庫就是英文的“database”翻譯來的,data + base,故名思義就是數據的根源,數據的基礎。那么為什么要有數據庫呢,數據庫首先是個計算機軟件,在所謂數據庫誕生之前,常用方法可能是程序員自己寫一個小程序來完成數據處理分析這樣的工作。
伴隨著計算機的普及,越來越多的場景開始使用計算機,產生了越來越多的數據,也催生了越來越多的數據分析需求。為了降低數據分析的門檻,讓更多人能夠更方便高效地管理分析數據,工程師們就打造了一種專門的軟件來幫助人們對數據進行合理的存儲以提高存取效率,提供易用的接口和豐富的分析算法以方便使用,集成有效的管理工具以提高數據安全性等等,這就是數據庫,也被稱為數據庫管理系統(DBMS,Database management system)。
數據庫是一整套數據管理體系,包括數據存儲的模型、數據組織的架構、數據分析的算法、數據管理的工具以及數據訪問的接口等等。