Amazon提升了DynamoDB NoSQL數據庫對JSON的支持
英文原文:Amazon Boosts JSON Support in DynamoDB NoSQL Database
上周,Amazon Web Service 團隊對他們的 DynamoDB NoSQL 數據庫服務進行了更新。這次更新改善了 DynamoDB 對 JSON 的支持,提高了 DynamoDB 的可擴展性,并且增加了免費用量。開發者現在不僅擁有 25GB 的免費存儲空間,還可以使用 AWS SDK 對較大的 JSON 文檔進行存儲、索引、查詢和更新。
AWS 發表了一篇博文,表明了他們對 DynamoDB 的想法——傳統上是一個面向鍵-值的 NoSQL 存儲,現在具有了類似 MongoDB 的,面向文檔存儲的功能。
AWS SDK 包含了這種新型面向文檔支持的實現,并且在實現中利用到了一些 DynamoDB 的新數據類型。對文檔的支持(目前可使用的有:Java、.NET、Ruby 的 SDK,以及基于瀏覽器的 JavaScript SDK 的一個擴展)簡化了一些操作,如將 JSON 數據或者本地語言對象映射成 DynamoDB 原生數據類型,以及支持基于文檔結構的查詢。
通過這次更新,DynamoDB 已經是一個完整的面向文檔的存儲。通過使用 AWS SDK,開發者可以容易地將 JSON 文檔存儲在 DynamoDB 表中,并保留原文檔的復雜結構和可能的嵌套“形狀”。通過構建一層非常薄的轉化層,新的數據類型也可以用于存儲其他結構化的格式,如 HTML 或者 XML。
</blockquote>不同語言的 AWS SDK 實現這種新能力的方式是不一樣的。應該注意的是,AWS 只使用 JSON 作為一個傳輸協議,并不會將數據本身存儲為 JSON 文檔。Java SDK 支持直接將 JSON 格式的字符串加載成一條 DynamoDB 數據庫記錄,而.NET SDK 要求開發者使用(更新過的)對象模型來構建一個文檔。除了為對象模型提供 Number、String 和 Binary 數據類型,AWS 還引入了新的面向文檔的數據類型:List 和 Map。List 是一個“有序的集合,類似于一個 JSON 數組”。Map 是一個“無序的、名字-值對的集合,類似于一個 JSON 對象”。
在一篇博文中,AWS CTO Werner Vogels 追溯了 DynamoDB 的歷史,并承認缺乏 JSON 的支持對開發者所產生的影響。
DynamoDB 從一開始就支持存儲 JSON 文檔,但是除了存儲和獲取這兩個操作之外再要進行其他的文檔操作是非常困難的。開發者無法直接訪問一個 JSON 文檔中深度嵌套的屬性,而缺少深度嵌套屬性的可見性將剝奪開發者使用 DynamoDB 一些特殊能力的機會。
迄今為止,若想要存儲和查詢 JSON,開發者有兩個選擇:a)快速開發的法子是將無法識別的 JSON 數據塊直接插入 DynamoDB 中;或者b)將 JSON 對象分解成屬性,而這要求額外的編程工作和一些事先的考慮。
</blockquote>DynamoDB 新提供的 JSON 能力不僅可用于存儲文檔,也可用于查詢文檔。盡管用戶可以通過 AWS UI 控制臺查看 JSON 文檔,但開發者更感興趣的是通過 SDK 獲取及更新整個或部分文檔的 能力。AWS 將文檔大小的限制從 64KB 擴大到 400KB,并且放松了比例的限制,用戶在單一操作中對“capacity units”的量不僅可以做翻倍或者減半的操作,還可以做其他比例的變更操作。Amazon 也增加了 DyamoDB 可免費使用的容量:相比過去 100MB 存儲空間和 10 個讀 capacity units,DynamoDB 用戶現在可以免費獲得 25GB 的存儲空間和 25 個讀/寫 capacity units。根據 AWS 的說明,這已足夠用于“運行一個支持 15,000 位用戶的手機游戲,或者運行一個日展現 500,000 次的廣告技術平臺”。
開發者對 JSON 友好的應用服務的需求在不斷地增加,這次 AWS 的更新很可能是一個響應。如 GigaOm 所報道的,這是一個從成熟的服務(如 MongoDB)以及 Google 和 Microsoft 新提供的服務手中奪取勢頭的機會。也許是對這些正在解決大規模問題的 NoSQL 產品進行了仔細調研,Vogels 宣稱“現在,開發者不必在優化了擴展性和優化了靈活性的數據存儲之間進行選擇了。”
來自: InfoQ<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!