我們為什麼要使用NOSQL非關聯式資料庫

2021-08-26 04:54:27 字數 1145 閱讀 9401

隨著網際網路web2.0**的興起,非關係型的資料庫現在成了乙個極其熱門的新領域,非關聯式資料庫產品的發展非常迅速。而傳統的關聯式資料庫在應付web2.0**,特別是超大規模和高併發的sns型別的web2.0純動態**已經顯得力不從心,暴露了很多難以克服的問題,例如:   

1、high performance - 對資料庫高併發讀寫的需求   web2.0**要根據使用者個性化資訊來實時生成動態頁面和提供動態資訊,所以基本上無法使用動態頁面靜態化技術,因此資料庫併發負載非常高,往往要達到每秒上萬次讀寫請求。關聯式資料庫應付上萬次sql查詢還勉強頂得住,但是應付上萬次sql寫資料請求,硬碟io就已經無法承受了。其實對於普通的bbs**,往往也存在對高併發寫請求的需求。   

例如:   1、資料庫事務一致性需求   很多web實時系統並不要求嚴格的資料庫事務,對讀一致性的要求很低,有些場合對寫一致性要求也不高。因此資料庫事務管理成了資料庫高負載下乙個沉重的負擔。   

2、資料庫的寫實時性和讀實時性需求   對關聯式資料庫來說,插入一條資料之後立刻查詢,是肯定可以讀出來這條資料的,但是對於很多web應用來說,並不要求這麼高的實時性。   [color=brown][/color][size=medium][/size]3、對複雜的sql查詢,特別是多表關聯查詢的需求   任何大資料量的web系統,都非常忌諱多個大表的關聯查詢,以及複雜的資料分析型別的複雜sql報表查詢,特別是sns型別的**,從需求以及產品設計角度,就避免了這種情況的產生。往往更多的只是單錶的主鍵查詢,以及單錶的簡單條件分頁查詢,sql的功能被極大的弱化了。   因此,關聯式資料庫在這些越來越多的應用場景下顯得不那麼合適了,為了解決這類問題的非關聯式資料庫應運而生。   nosql 是非關係型資料儲存的廣義定義。它打破了長久以來關係型資料庫與acid理論大一統的局面。nosql 資料儲存不需要固定的表結構,通常也不存在連線操作。在大資料訪問上具備關係型資料庫無法比擬的效能優勢。該術語在 2009 年初得到了廣泛認同。   當今的應用體系結構需要資料儲存在橫向伸縮性上能夠滿足需求。而 nosql 儲存就是為了實現這個需求。google 的bigtable與amazon的dynamo是非常成功的商業 nosql 實現。一些開源的 nosql 體系,如facebook 的cassandra, apache 的hbase,也得到了廣泛認同。從這些nosql專案的名字上看不出什麼相同之處:hadoop、voldemort、dynomite,還有其它很多。

為什麼要使用NoSQL

前面 為什麼要使用nosql 和 關聯式資料庫還是nosql資料庫 兩篇從大體上介紹了為什麼要用nosql,何時該用nosql。經常有朋友遇到困惑,看到nosql的介紹,覺得很好,但是卻不知道如何正式用到自己的專案中。很大的原因就是思維固定在mysql中了,他們問得最多的問題就是用了nosql,我如...

為什麼我們要使用JNDI?

個人理解 就像某些配置如果我們嵌入到 中,每當配置需要改動的時候就不得不改動 重新編譯,使用jndi可以讓我們使用外部配置的方式進行引數配置以實現其解耦。下面這個例子就是使用資料庫驅動是否使用jndi的解耦。直接使用jdbc或者通過jndi引用資料來源的程式設計 量相差無幾,但是現在的程式可以不用關...

為什麼我們要使用DTO

乙個完整的業務是通過領域實體 物件 domain建立的,而dto是根據ui的需求來設計的。比如 customer領域物件可能會包含一些諸如firstname,lastname,email,address等資訊。但如果ui上不打算顯示address的資訊,那麼customerdto中也無需包含這個 a...