簡易檢索 / 詳目顯示

研究生: 施銘斌
Shih, Ming-Pin
論文名稱: NoSQL資料庫之SQL語法介面實作—以Google App Engine為例
Developing a SQL Interface for NoSQL Database — using Google App Engine as an example
指導教授: 王宗一
Wang, Tzone-I
學位類別: 碩士
Master
系所名稱: 工學院 - 工程科學系碩士在職專班
Department of Engineering Science (on the job class)
論文出版年: 2014
畢業學年度: 102
語文別: 中文
論文頁數: 44
中文關鍵詞: NoSQL資料庫SQLGoogle App Engine
外文關鍵詞: NoSQL Database, SQL, Google App Engine
相關次數: 點閱:177下載:6
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 關聯式資料庫自1970年代開始主導了資料庫儲存管理模式達數十年,然而近年來隨著雲端運算(Cloud Computing)急速成長,產生了海量資料(Big Data)的儲存管理的衝擊,傳統關聯式資料庫已經無法有效的儲存、查詢或分析海量資料,為了解決此問題,進而產生了NoSQL(Not Only SQL)資料庫之管理模式。
    目前雖有多種NoSQL資料庫能夠提供給使用者查詢與異動資料庫的介面,但都不支援標準SQL語法類似的功能,Google App Engine使用的資料庫Datastore提供GQL(Google Query Language)語法,雖類似SQL,但不全然相同。關聯式資料庫與NoSQL資料庫是為了各自不同的目的而存在的,當企業有海量資料的需求時,勢必要將關聯式資料庫移轉到NoSQL海量資料庫,同時保持資料的關聯性。使用新資料庫若還需要學習新的語法或是無法達到資料關聯(JOIN)的查詢,都是非常不便利的,且標準SQL語法已經被廣泛學習且熟知。
    本研究提出一個介面,可以將標準SQL語法轉譯為GQL語法,並可針對轉入海量資料庫之資料做新增(INSERT)、修改(UPDATE)、刪除(DELETE)及查詢(SELECT)。且在Google App Engine上實作該介面,達到了資料關聯(JOIN)特性、聚合函數(Aggregation)、子查詢(Subquery)等功能。因此使用本研究的實作介面時,使用者可以不需要另外學習NoSQL資料庫的語法,直接使用標準SQL語法,就可使用NoSQL資料庫,形同操作關聯式資料庫一般。

    In recent years with the rapid growth of network business applications and the cloud computing, issues of Big Data emerge and impact the data storage management of database. It is recognized traditional relational database is unsuitable to store, query, or analyze such enormous data effectively. In order to solve this problem, NoSQL (Not Only SQL) database appear. Big names in web services, such as Amazon, Cassandra, and Google, provide direct query web interface and transaction APIs to the developers for using their NoSQL database. As the name Not Only SQL suggests, these databases do not fully support the standard SQL language. For example, the GQL (Google Query Language) is a SQL-like language for retrieving entities or keys from the App Engine scalable datastore maintained by the Google. Although the GQL has syntax similar to that of the SQL, they are not identical. Relational databases and NoSQL databases exists for different purposes. Developers have been using the SQL language for various database management systems for a long time. When they try to migrate from relational database to some NoSQL database, they have to learn the new syntax of NoSQL languages and, to be even worse, most NoSQL languages cannot perform join operations. This study develops an interface to translate standard SQL syntax into GQL syntax and manipulate the datastore by Insert, Update, Delete and Select operations that uses Google App Engine under the hood. The interface is able to support SQL Joins, Aggregate functions, and Subqueries. Therefore, when using this interface, developers can use standard SQL syntax on NoSQL databases, just like they are using SQL on relational databases.

    中文摘要 i Extended Abstract ii 誌謝 vii 章節目錄 viii 表目錄 x 圖目錄 xii 第一章 緒論 1 第一節 研究背景與動機 1 第二節 研究目的 1 第三節 研究貢獻 2 第二章 文獻探討 3 第一節 關聯式資料庫與SQL 3 第二節 NoSQL資料庫 5 第三節 雲端運算與Google App Engine(GAE) 6 第四節 Google Query Language(GQL) 11 第三章 研究方法 13 第一節 介面架構 13 第二節 資料匯入NoSQL資料庫 15 第三節 INSERT流程 17 第四節 UPDATE流程 18 第五節 DELETE流程 19 第六節 SELECT流程 20 第七節 錯誤語法流程 22 第四章 介面實作 23 第一節 INSERT資料 23 第二節 UPDATE資料 24 第三節 DELETE資料 25 第四節 SELECT資料 26 第五節 錯誤語法判斷 39 第六節 其他介面比較 39 第五章 結論與未來工作 41 第一節 結論 41 第二節 未來工作 41 參考文獻 42

    [1]李威和,網路應用程式開發-使用Google App Engine雲端運算,文魁出版,2009。
    [2]李紹綸,資料庫系統設計理論,上奇出版,2010。
    [3]Pramod J. Sadalage and Martin Fowler 原著,吳曜撰譯,搞懂NoSQL的15堂課,基峯資訊出版,2013。
    [4]徐桂祥,SQL案例解析:以SQL Server與Oracle為例,悅知文化出版,2010。
    [5]陳義雄,基於Cassandra資料庫之雲端資料建模:從SQL到NoSQL,臺灣大學電機工程學系碩士論文,2012。
    [6]陸嘉恒,大數據挑戰與NoSQL數據庫技術,電子工業出版社出版,2013。
    [7]張東淼,GAE(Google App Engine)雲端資料庫實作,上奇科技出版,2012。
    [8]黃健瑋,以混合SQL與NoSQL為策略提昇關聯式資料庫在雲端架構下的效能,中正大學資訊工程系碩士論文,2012。
    [9]湯秉翰,雲端網頁程式設計:Google App Engine應用實作(第二版),博碩文化出版,2013。
    [10]雷萬雲,直達雲端運算的核心-SaaS、PaaS、IaaS的營運教戰手冊,佳魁資訊出版,2011。
    [11]蕭毅,劉景豊,林威廷,黃奕欽,蔡慶堂,雲端分散式資料庫技術之介紹-以MongoDB為例,電信研究雙月刊,第42卷第2期,頁281-294,2012。
    [12]Nance Cory, Losser Travis, Iype Reenu, Harmon Gary, "NOSQL VS RDBMS - WHY THERE IS ROOM FOR BOTH", Proceedings of the Southern Association for Information Systems Conference (SAIS), pp. 1469-1472. March 8th–9th, Savannah, GA, USA, 2013.
    [13]See Wah Cheng, "Datastore Bulk Upload + ReferenceProperty in Google App Engine", http://seewah.blogspot.tw/2009/08/datastore-bulk-upload-referenceproperty.html, (Accessed 2014/04/06), 2009.
    [14]Ramez A. Elmasri, Shamkant B. Navathe, "Fundamentals of Database Systems", 4th Edition, Addison-Wesley, ISBN:0-321-12226-7, pp. 127-129, 2004.
    [15]Google Developers, "Google App Engine GQL Reference", https://developers.google.com/appengine/docs/python/datastore/gqlreference?hl=zh-tw , (Accessed 2014/05/02)
    [16]Google Developers, "Python Datastore API", https://developers.google.com/appengine/docs/python/datastore/ , (Accessed 2014/05/18)
    [17]Peter Mell, Timothy Grance, "The NIST Definition of Cloud Computing", NIST Special Publication
    (http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf), 2011.
    [18]Rabi Prasad Padhy, Manas Ranjan Patra, Suresh Chandra Satapathy, " RDBMS to NoSQL: Reviewing Some Next-Generation Non-Relational Database's", International Journal of Advanced Engineering Sciences and technologies, Vol. 11, Iss: 1, pp.15 – 30, 2011.
    [19]Jaroslav Pokorny, "NoSQL databases: a step to database scalability in web environment", International Journal of Web Information Systems, Vol. 9, Iss: 1, pp. 69 – 82, 2013.
    [20]John Roijackers, "Bridging SQL and NoSQL", Master thesis , Eindhoven University of Technology, Department of Mathematics and Computer Science, p. 8, 2012.
    [21]Hailing Zhang, Yang Wang, Junhui Han, "Middleware Design for Integrating Relational Database and NOSQL Based on Data Dictionary", International Conference on Transportation, Mechanical, and Electrical Engineering (TMEE), pp.1469-1472. December 16-18, Changchun, China, 2011.

    下載圖示 校內:2017-08-15公開
    校外:2018-08-15公開
    QR CODE