對于許多程序員而言,基本上不需要決定公司選擇哪種數據庫。當程序員加入公司時,公司早已經確認了的大多數技術選擇,尤其是數據庫選擇,因為一旦選擇了數據庫,以后遷移的成本仍然很高,因此要求程序員在使用現有數據庫時,具有一定的避坑能力。那么程序員如何在數據庫中避坑的?下文總結了5點,幫助大家更好的應用數據庫。
程序員如何在數據庫中避坑的?
再好的數據庫,如果使用姿勢不對也是枉然,更何況很多程序員并不怎么懂數據庫。在數據庫使用中,我們常會碰到很多問題。
人為失誤
人為失誤一般分兩類,一種是DBA操作失誤,一種是程序員開人員程序里使用不當。DBA一般我們認為是數據庫管理的專家了,出錯的概率比較小,但是一旦出錯,危險是做大的。比如我們經常調侃的“刪庫跑路”,雖然是依據調侃,但是我是真真的見到過兩次,生產環境出現一次,就會在你的工作生涯上記上“光輝”一筆,所以說DBA算是一個高危工作了吧。另一種是開發人員使用不當。常見的比如在使用大表時候,不考慮是否有索引,進行了全表掃描,導致整個數據庫被拖垮。
數據庫的訪問瓶頸
只要是數據庫,就會有并發量的限制。以前使用MySQL,我們經常看到互聯網公司并發上萬的壓測。但是對于很多新型的MPP數據庫,他們的并發并不是你想的那樣,MPP一般由集群CPU物理核數有關。比如以前開發程序查詢的MySQL,遷移到GP,那么你的數據庫連接池要改一改了。特別是對于一些面向互聯網的網站,數據庫管理層也要做訪問策略,不然,一個外掛可能就會把你的庫搞死。
索引
我們都知道索引在傳統的關系型數據庫中使用的很多,效果也很明顯。但是你要知道索引是拿存儲換時間的操作。曾遇到過開發人員動不動就讓建索引,搞的好像不要錢一樣。還有像Vertica這個數據庫就比較友好了,不需要建立索引,只需要在建表時候預排序分布即可提高查詢效率,同時列存儲的數據還是壓縮的,降低了存儲,還提高了查詢效率。
HA(高可用)
數據庫作為存儲查詢引擎的同時,支撐著大型網站的后臺服務,一定要考慮高可用。對于一些天然不支持高可用或者高可用不友好的選型一定要小心。再來安利一下Vertica,無Master MPP架構,集群中只要不超過一半機器宕機,集群就處于可用狀態。
標準SQL
SQL就是針對數據庫查詢產生的語言。隨著新型數據庫的出現,很多數據庫不支持標準SQL或者支持很弱。比如HBase。這對于很多以前的開發人員還是有一定學習門檻的,還有就是后期如果出現業務遷移還是很困難的。
Oracle支持標準SQL,但是存儲過程并不是每個數據庫都有的,這也是阿里為何禁用存儲過程的吧,你無法想象一個上萬行存儲過程的遷移要耗費多少資源。對標準SQL的支持,降低了開發人員的使用門檻,也降低了以后業務遷移的風險。
以上就是關于程序員如何在數據庫中避坑的全部內容介紹,想了解更多關于數據庫的信息,請繼續關注中培偉業。