非關(guān)系型數(shù)據(jù)庫的特點
關(guān)系型數(shù)據(jù)庫(Relational Database Management System 簡稱 RDBMS)一直是主流的數(shù)據(jù)庫解決方案缤言,但是隨著大數(shù)據(jù)時代的到來,關(guān)系型數(shù)據(jù)庫在處理大量數(shù)據(jù)的時候就顯得力不從心了型宙。非關(guān)系型數(shù)據(jù)庫(Not Only SQL )應(yīng)運而生店量,非關(guān)系型數(shù)據(jù)庫實際上是閹割了關(guān)系型數(shù)據(jù)庫里面的部分功能,來實現(xiàn)更好的靈活性和擴展性扇单。它的特性如下:
- 非關(guān)系型數(shù)據(jù)庫存儲數(shù)據(jù)的方式是key-value的形式换可,它和RDBMS相比椎椰,沒有schema。schma實際上就是對數(shù)據(jù)的約束沾鳄,這個約束包括數(shù)據(jù)的完整性和數(shù)據(jù)之間的關(guān)系慨飘。RDBMS由于是以表的形式來存儲數(shù)據(jù),所有的數(shù)據(jù)都必須要按照表的結(jié)構(gòu)來套進去,這樣勢必造成數(shù)據(jù)的冗余瓤的。并且表中的各字段是固定的休弃,增加新的字段的時候需要重建表。
- 大型文件和緩存的應(yīng)用數(shù)據(jù)圈膏,數(shù)據(jù)可能互不相干但是是滿足同一個應(yīng)用需求的塔猾,這時使用非關(guān)系型數(shù)據(jù)存儲這些數(shù)據(jù)要容易得多,因為在這些數(shù)據(jù)之間將不會存在需要進行建模的關(guān)聯(lián)關(guān)系稽坤。
- 非關(guān)系型數(shù)據(jù)庫是分布式的丈甸,它將數(shù)據(jù)進行分區(qū)存儲,同時還把數(shù)據(jù)進行復(fù)制尿褪,存儲在多個地理位置上睦擂。能夠避免單點故障,同時也方便對數(shù)據(jù)庫進行擴展杖玲。
查詢方式簡單易用顿仇,因為存儲的方式簡單,所以查詢的過程如同一條直線摆马,副作用就是并不支持復(fù)雜的查詢臼闻。
Amazon SimpleDB是一種典型的NoSQL數(shù)據(jù)庫,同與Amazon EC2和亞馬遜的S3一樣作為一項Web 服務(wù)今膊,屬于亞馬遜網(wǎng)絡(luò)服務(wù)的一部分些阅。Amazon S3 存儲原始數(shù)據(jù)伞剑,Amazon SimpleDB 將所有數(shù)據(jù)視為輸入并為所有屬性設(shè)置索引斑唬,使得能夠快速查詢這些數(shù)據(jù)。應(yīng)將大型數(shù)據(jù)元或文件存儲在 Amazon S3 中黎泣,而最好將小型數(shù)據(jù)元素或文件指針(可能指向 Amazon S3 數(shù)據(jù)元)保存在 Amazon SimpleDB 中恕刘。
Amazon SimpleDB 數(shù)據(jù)模型由域、項目抒倚、屬性和值組成褐着。域是由屬性-值對描述的項目集合。域可以對應(yīng)地理解為傳統(tǒng)數(shù)據(jù)庫里面的表托呕,項目就是表中的一條數(shù)據(jù)含蓉,屬性對應(yīng)表格的列標(biāo)題,值對應(yīng)于每個單元格里面的數(shù)據(jù)项郊。但是馅扣,與電子表格不同的是,Amazon SimpleDB 每個單元格關(guān)聯(lián)多個值(例如着降,對于項目“123”差油,屬性“color”可以是“blue”值和“red”值)。并且SimpleDB里面存儲的數(shù)據(jù)都是字符串格式的。
SimpleDB有如下的限制
儲存限制
Attribute | Maximum |
---|---|
domains | 250 active domains per account. More can be requested by filling out a form |
size of each domain | 10 GB |
attributes per domain | 1,000,000,000 |
attributes per item | 256 attributes |
size per attribute | 1024 bytes |
查詢限制
Attribute | Maximum |
---|---|
items returned in a query response | 2500 items |
seconds a query may run | 5 seconds |
attribute names per query predicate | 1 attribute name |
comparisons per predicate | 22 operators |
predicates per query expression | 20 predicates |