NoSQL(Not Only Structured Query) Language
為什會有NoSQL?
Google的搜尋、Facebook的社交與Instagram的圖片等服務需要處理PB等級的巨量資料,傳統關聯式資料庫架構已經不敷使用,因此有人提出,如NoSQL資料庫,它可以水平擴充,在面對巨量資料能有較佳的效能。
NoSQL類型
- 鍵值資料庫 此資料模型的設計理念來自雜湊表,在Key與value之間建立對應關係,透過key可以直接存取value ,進而進行基本操作。此模型著名的實作,Redis、Memcached、Riak。
關聯式資料庫
學號 | 姓名 | 性別 | 興趣 |
---|---|---|---|
A001 | 黃健倫 | 男 | 騎單車、打球 |
A002 | 卓哲宇 | 男 | 打球 |
鍵值資料庫
{key:"A001_姓名", value:"黃健倫"}
{key:"A001_性別", value:"男"}
{key:"A001_興趣", value:"騎單車、打球"}
{key:"A002_姓名", value:"卓哲宇"}
{key:"A002_性別", value:"男"}
{key:"A002_興趣", value:"打球"}
2.文件導向資料庫 文件導向資料庫(Document Oriented Database)是將XML或JSON文件導入NoSQL概念中。著名的實作包括:MongoDB、 CouchDB、RavenDB等。文件導向資料庫主要以集合(Collection)的方式儲存資料,而資料被稱為文件(Document)。
關聯式資料庫 | 文件導向資料庫 | |
---|---|---|
資料表 | 資料表(Table) | 集合(Collection) |
資料 | 列(Row) | 文件(Document) |
{"學號":"A001", "姓名":"黃健倫", "性別":"男", "興趣":"騎單車、打球"}
{"學號":"A002", "姓名":"卓哲宇", "性別":"男", "興趣":"打球"}
3.列式資料庫 列式資料庫是Column儲存,將同一Column資料存在一起,著名的實作包括:Cassandra、Google BigTable、Hadoop HBase。
學號 | 姓名 |
---|---|
A001 | 黃健倫 |
A002 | 卓哲宇 |
[姓名] 欄位資料表
學號 | 性別 |
---|---|
A001 | 男 |
A002 | 男 |
[性別] 欄位資料表
學號 | 興趣 |
---|---|
A001 | 騎單車、打球 |
A002 | 打球 |
[興趣] 欄位資料表
4.圖形資料庫
圖型資料庫(Graph Oriented Database)是採用圖結構的概念來儲存資料,並利用圖結構相關演算法提高性能。著名的實
作包括:Neo4j、HyperGraphDB與FlockDB(Twitter)等。