俳句之神芭蕉桑
隨著互聯(lián)網(wǎng)的不斷發(fā)展,有時候企業(yè)需要使用不同的開源數(shù)據(jù)庫來搭建自己的在線平臺。下面我們就一起來了解一下,在選擇數(shù)據(jù)庫的時候我們都有哪些方法可以使用。
有一個明確的目標(biāo)
這一點看似簡單,但在和很多人聊過MySQL、MongoDB、PostgreSQL之后,我覺得這一點才是重要的。面對繁雜的開源數(shù)據(jù)庫,更需要明確自己的目標(biāo)。無論這個數(shù)據(jù)庫是作為開發(fā)用的標(biāo)準(zhǔn)化數(shù)據(jù)庫后端,抑或是用于替換遺留代碼中的原有數(shù)據(jù)庫,這都是一個明確的目標(biāo)。目標(biāo)一旦確定,就可以集中精力與開源軟件的提供方商討更多細(xì)節(jié)了。
了解你的工作負(fù)載
盡管開源數(shù)據(jù)庫技術(shù)的功能越來越豐富,但這些新加入的功能都不太具有普適性。譬如MongoDB新增了事務(wù)的支持、MySQL新增了JSON存儲的功能等等。目前開源數(shù)據(jù)庫的普遍趨勢是不斷加入新的功能,但很多人的誤區(qū)卻在于沒有選擇適合的工具來完成自己的工作——這樣的人或許是一個自大的開發(fā)者,又或許是一個視野狹窄的主管——終導(dǎo)致公司業(yè)務(wù)上的損失。致命的是,在業(yè)務(wù)初期,使用了不適合的工具往往也可以順利地完成任務(wù),但隨著業(yè)務(wù)的增長,很快就會到達瓶頸,盡管這個時候還可以替換更合適的工具,但成本就比較高了。例如,如果你需要的是數(shù)據(jù)分析倉庫,關(guān)系數(shù)據(jù)庫可能不是一個適合的選擇;如果你處理事務(wù)的應(yīng)用要求嚴(yán)格的數(shù)據(jù)完整性和一致性,就不要考慮NoSQL了。
不要重新發(fā)明輪子
在過去的數(shù)十年,開源數(shù)據(jù)庫技術(shù)迅速發(fā)展壯大。開源數(shù)據(jù)庫從新生,到受到質(zhì)疑,再到受到認(rèn)可,現(xiàn)在已經(jīng)成為很多企業(yè)生產(chǎn)環(huán)境的數(shù)據(jù)庫。企業(yè)不再需要擔(dān)心選擇開源數(shù)據(jù)庫技術(shù)會產(chǎn)生風(fēng)險,因為開源數(shù)據(jù)庫通常都有活躍的社區(qū),可以為越來越多的初創(chuàng)公司、中型企業(yè)甚至500強公司提供開源數(shù)據(jù)庫領(lǐng)域的支持和三方工具。
先從簡單開始
你的數(shù)據(jù)庫實際上需要達到多少個9的可用性?對許多公司來說,“實現(xiàn)高可用性”僅僅只是一個模糊的目標(biāo)。當(dāng)然,常見的答案都會是“它是關(guān)鍵應(yīng)用,我們無論多短的停機時間都是無法忍受的”。北京IT培訓(xùn)發(fā)現(xiàn)數(shù)據(jù)庫環(huán)境越復(fù)雜,管理的難度就越大,成本也會越高。理論上你總可以將數(shù)據(jù)庫的可用性提得更高,但代價將會是大大增加的管理難度和性能下降。所以,先從簡單開始,直到有需要時再逐步擴展。
終極尐壊疍
我們都知道,服務(wù)器數(shù)據(jù)庫的開發(fā)一般都是通過java或者是PHP語言來編程實現(xiàn)的,而為了提高我們數(shù)據(jù)庫的運行速度和效率,數(shù)據(jù)庫優(yōu)化也成為了我們每日的工作重點,今天,北京IT培訓(xùn)就一起來了解一下mysql服務(wù)器數(shù)據(jù)庫的優(yōu)化方法。
為什么要了解索引
真實案例
案例一:大學(xué)有段時間學(xué)習(xí)爬蟲,爬取了知乎300w用戶答題數(shù)據(jù),存儲到mysql數(shù)據(jù)中。那時不了解索引,一條簡單的“根據(jù)用戶名搜索全部回答的sql“需要執(zhí)行半分鐘左右,完全滿足不了正常的使用。
案例二:近線上應(yīng)用的數(shù)據(jù)庫頻頻出現(xiàn)多條慢sql風(fēng)險提示,而工作以來,對數(shù)據(jù)庫優(yōu)化方面所知甚少。例如一個用戶數(shù)據(jù)頁面需要執(zhí)行很多次數(shù)據(jù)庫查詢,性能很慢,通過增加超時時間勉強可以訪問,但是性能上需要優(yōu)化。
索引的優(yōu)點
合適的索引,可以大大減小mysql服務(wù)器掃描的數(shù)據(jù)量,避免內(nèi)存排序和臨時表,提高應(yīng)用程序的查詢性能。
索引的類型
mysql數(shù)據(jù)中有多種索引類型,primarykey,unique,normal,但底層存儲的數(shù)據(jù)結(jié)構(gòu)都是BTREE;有些存儲引擎還提供hash索引,全文索引。
BTREE是常見的優(yōu)化要面對的索引結(jié)構(gòu),都是基于BTREE的討論。
B-TREE
查詢數(shù)據(jù)簡單暴力的方式是遍歷所有記錄;如果數(shù)據(jù)不重復(fù),就可以通過組織成一顆排序二叉樹,通過二分查找算法來查詢,大大提高查詢性能。而BTREE是一種更強大的排序樹,支持多個分支,高度更低,數(shù)據(jù)的插入、刪除、更新更快。
現(xiàn)代數(shù)據(jù)庫的索引文件和文件系統(tǒng)的文件塊都被組織成BTREE。
btree的每個節(jié)點都包含有key,data和只想子節(jié)點指針。
btree有度的概念d>=1。假設(shè)btree的度為d,則每個內(nèi)部節(jié)點可以有n=[d+1,2d+1)個key,n+1個子節(jié)點指針。樹的大高度為h=Logb[(N+1)/2]。
索引和文件系統(tǒng)中,B-TREE的節(jié)點常設(shè)計成接近一個內(nèi)存頁大小(也是磁盤扇區(qū)大小),且樹的度非常大。這樣磁盤I/O的次數(shù),就等于樹的高度h。假設(shè)b=100,一百萬個節(jié)點的樹,h將只有3層。即,只有3次磁盤I/O就可以查找完畢,性能非常高。
索引查詢
建立索引后,合適的查詢語句才能大發(fā)揮索引的優(yōu)勢。
另外,由于查詢優(yōu)化器可以解析客戶端的sql語句,會調(diào)整sql的查詢語句的條件順序去匹配合適的索引。
香雪海Jackie
現(xiàn)在正做一個接口,通過不同的連接字符串操作不同的數(shù)據(jù)庫(數(shù)據(jù)庫培訓(xùn)數(shù)據(jù)庫認(rèn)證)。要用到MySQL(MySQL認(rèn)證Mysql培訓(xùn))數(shù)據(jù)庫,以前沒用過這個數(shù)據(jù)庫,用aC++(C++培訓(xùn))ess和sqlserver比較多。通過網(wǎng)上的一些資料和自己的摸索,大致清楚了C++連接mysql的方法。北京IT培訓(xùn)認(rèn)為可以通過2種方法實現(xiàn)。
第一種方法是利用ADO連接,
第二種方法是利用mysql自己的api函數(shù)進行連接。
第一種方法可以實現(xiàn)我當(dāng)前的需求,通過連接不同的字符串來連接不同的數(shù)據(jù)庫。暫時只連接了mysql,sqlserver,oracle,access。對于access,因為它創(chuàng)建表的SQL語句不太兼容標(biāo)準(zhǔn)SQL語句,需要做一些處理,這里暫時不說。第二種方法只能針對于mysql數(shù)據(jù)庫的連接,不過用這種方法不用安裝MyODBC服務(wù)器程序。
不管用哪種方法,首先需要安裝Mysql數(shù)據(jù)庫,安裝方法請看“mysql安裝及一些注意點”。最好安裝一個Navicatformysql,方便操作mysql數(shù)據(jù)庫。下面分別說下這兩種方法:
(一)通過ADO連接MySql數(shù)據(jù)庫
1、通過ADO連接MySql數(shù)據(jù)庫,首先得安裝MyODBC服務(wù)器程序。
MyODBC版本要和MySql的版本對應(yīng)上,否則會連接不上數(shù)據(jù)庫。我用的版本分別是和。
安裝好后,點擊開始菜單->設(shè)置->控制面板->管理工具->數(shù)據(jù)源(ODBC)->用戶DSN->添加->選擇。如下圖:
然后雙擊進行配置。配置好可以點Test進行下測試(如下圖),如果能連上會彈出connectionsuccessful對話框。
優(yōu)質(zhì)考試培訓(xùn)問答知識庫