NoSQL現在已經變成在IT界中十分熱門的話題了,在本文中,將為你介紹NoSQL中的一員CouchDB的基本知識,帶你開始走入NoSQL豐富多彩的世界。
什麼是NoSQL
NoSQL(是not only SQL的縮寫,也有說法認為是non-relational,即非關係型資料庫)其實是不使用傳統的關聯式資料庫模型,而是使用如key-value儲存、文檔型的、列儲存、圖型資料庫、xml等方式儲存資料的模型統稱。之所以不使用傳統的範式,主要是在於它們儲存資料的方式發生了變化。例如,當你需要儲存發票的資料時,在傳統的關係資料模型中,需要設計表的結構,然後使用伺服器端語言將其轉化為實體物件,再傳遞到使用者端(這就是所謂的ORM對象關係映射),而在NoSQL中,你只要儲存發票資料就可以了。 NoSQL不需要預先設計表和結構就可以儲存新的數值。當然,請記住,NoSQL不是銀彈。如果你的項目中要儲存的資料的確需要關係型資料庫模型才能完成,那麼應該堅持使用關係型資料庫。
NoSQL的特點
NoSQL的出現主要是為瞭解決資料庫讀寫效能的問題,隨著越來越龐大的Web應用系統的出現,如SNS,微博等應用需要大量對資料進行讀和寫,並且要求進行分布式的部署,而傳統的關係資料模型在大資料訪問量和分布式環境下,由於關聯式模式中經常要對多表進行串連操作,因此效能有時會有所降低,所以NoSQL的強調的是“非關係型”資料,NoSQL 資料存放區不需要固定的表結構,通常也不存在串連 操作。在大資料存取上具備關係型資料庫無法比擬的效能優勢。
在http://nosql-database.org/中,對NoSQL的描述是:非關係的,分布式的,開源的而且可以垂直擴充的。並且大多數NoSQL資料庫具有以下特點:Schema-free,方便的支援資料冗餘,簡單的API,基於最終一致性(eventually consistent)和BASE原則(而非ACID原則)。目前,Google 的 BigTable 與 Amazon 的 Dynamo 是非常成功的商業 NoSQL 實現。一些開源的 NoSQL 體系,如Facebook 的 Cassandra , Apache 的 HBase ,也得到了廣泛認同。