天天看點

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

rdbms nosql

在過去的25年中,使用帶有預定義架構的RDBMS建構了應用程式,該架構強制資料符合寫入時的架構。 許多人仍然認為,即使資料集中的記錄彼此之間沒有關系,他們也必須對應用程式使用RDBMS。 此外,這些資料庫針對交易用途進行了優化,并且必須出于分析目的導出資料。 NoSQL技術已經改變了這種模式,以提供突破性的性能改進。

這是我在新加坡Strata + Hadoop World上的演講 。 我浏覽了架構中包含100多個表的音樂資料庫,并示範了如何轉換該模型以用于NoSQL資料庫 。 此部落格文章是此示範文稿的摘要。

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

為什麼如此重要?

讓我們為從RDBMS到NoSQL + SQL的發展為什麼如此重要做好準備:

  • 我在過去20年中經曆的90%以上的用例不是需要關系資料庫的用例 。 他們需要某種持久存儲。 在大多數情況下,選擇這些關系資料庫是因為它們得到了IT團隊的支援,這使得生産非常容易。
  • RDBMS資料模型比單個表更複雜 。 當您開始想周遊關系模型的關系時,它們很複雜。 一對多關系需要多個表,并且建立代碼以保留資料需要時間。
  • 推斷(或删除)的鍵不使用實際的外鍵 。 這種做法使其他分析師很難了解這種關系。
  • 事務處理表永遠不會與分析表相同 。 從工程角度看,軟體是為事務表編寫的,然後您提出了一些ETL流程,以将資料轉換為星型模式或要遵循的任何其他資料倉庫模型,然後運作分析。 這些過程需要大量時間來建構,維護和運作。

此處的目标是建立“按需采購”業務,并縮短資料行動周期。 如果可以擺脫從事務表到分析表的建立ETL流程的麻煩,那麼我将加快資料到操作的周期。 這是我的目标。

更改資料模型

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

上面的資料模型實際上是音樂資料庫的一部分; 實際上,該圖中缺少180個表。 這表明這些類型的資料模型會變得非常複雜,非常快。 總體而言,該模式有236個表來描述七種不同類型的事物。 如果您是資料分析師,并且想深入研究該架構以查找新知識,那麼編寫查詢以連接配接236個表可能并不容易。

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

我們可以像藝術家那樣擷取一個子集,然後可以将其分解為一個表,如上所示。 在表格中,您可以在底部看到幾個清單。 關系資料庫并不真正支援清單概念。 對于多對多和一對多,您必須建立特殊的映射。 如果像這樣将它們全部放在一個表中,則可以将資料對象的嵌套層次結構放在一起。 我們甚至可以在此處放置其他内容,例如對所需的其他ID的引用,然後可以支援我們擁有的所有不同用例。

從音樂資料庫的角度來看,如果我說“給定關系資料庫模式,為我找到貓王的所有作品”,那将是困難的。 但是使用上面顯示的資料模型,這就是查詢的樣子。

尋找貓王

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

這是一個非常簡單的嵌套選擇查詢。 我不必連接配接數百個表來查找所需的内容,因為我有一個可以查詢的JSON文檔模型。

好處

  • 擴充的關系模型可以進行大量簡化 。 如果您是軟體工程師,則即使您使用的是Java Persistence API之類的代碼,也可以編寫代碼将内部資料結構中的資料持久化到關系資料庫中,但仍然需要編寫代碼,執行映射以及測試序列化和反序列化。 然後,您必須找出延遲加載的内容,而不是延遲加載的内容。 如果您可以将所有内容都編寫為JSON文檔,那麼您将需要為持久性存儲節省100倍的開發時間。
  • 簡化推動了自省 。 我們有Apache Drill之類的工具,可讓我們查詢JSON資料,您可以嘗試一下。
  • Apache Drill為擴充的關系查詢提供了非常高性能的執行 。

JSON資料的新資料庫

如果要處理事務性工作負載,則可能要使用文檔資料庫。 這是OJAI(開放JSON應用程式接口)出現的地方。OJAI是MapR-DB公開的文檔資料庫的API。 該API中的某些入口點會執行諸如插入,查找,删除,替換和更新之類的操作。

有關在Java中使用JSON以及在Java OJAI中建立,删除和查找文檔的更多示例,請下載下傳示範文稿 。

查詢JSON資料等

如果您真的想簡化資料到操作的周期,則需要能夠進入并真正查詢這些資料。 這意味着使資料科學團隊,資料分析師和業務分析師能夠擷取資料。 如果您知道如何編寫ANSI SQL,可以使用Apache Drill。 它不是SQL的變體。 它支援ANSI SQL2003。您具有熟悉SQL的能力,但同時也獲得了NoSQL附帶的好處,是以您不必擔心如何針對不同的用例優化資料庫。你有。

Drill支援即時模式發現

Apache Drill支援即時模式發現。 從寫模式遷移到動态模式是一個非常艱巨的步驟。 是以,盡管Drill可以從Hive讀取并使用Hive的metastore,但它不需要Hive。 如果要在筆記本電腦上安裝Drill并開始查詢檔案,可以執行此操作。 像這樣的技術具有如此低的進入門檻真是太好了。 它不需要Hadoop叢集,除了Java虛拟機外不需要任何東西。

Drill的資料模型很靈活

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

動态模式發現:這到底是什麼意思? 我在該圖中的右側有一個示例。 這兩個JSON文檔實際上具有不同的字段。 當Drill逐條記錄時,它會動态地動态生成和編譯代碼以處理其發現的架構發現。 它可以處理具有不同模式的所有這些不同記錄。 其他SQL-on-Hadoop技術都無法做到這一點。

借助即時分析實作“按原樣”業務

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

我們要做的是,在此過程中,我們基本上擺脫了所有中間人,使人們可以從資料中擷取見解。 大多數企業的目标是使作為資料分析師和資料科學家的人員能夠擷取資料并盡快提出問題。 當您擁有所有這些階段入口以擷取資料以弄清楚如何将其與您擁有的資料倉庫資料聯接時,它就相當複雜,并且通常需要通過DBA。 請記住,我不是在告訴您擺脫您的DBA,也不是在告訴您放棄良好的資料模組化實踐。 但是,使用Apache Drill之類的工具,您可以使人們引入自己的資料源,并使用您在業務現場生成的資料跨這些資料源運作聯接,進而縮短整個資料行動周期。 -飛。

随着Hadoop和其他大資料相關技術的出現,我們已經看到了一些變化。 技術在BI領域的變化非常緩慢。 在資料可視化中,它是第一個真正允許自助服務的領域。 這發生在大約十五年前,那時人們實際上可以建立自己的可視化檔案而不必經過開發人員。 這很棒,因為它确實幫助人們更快地洞察了他們的資料。

自助資料探索的演進

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

但是當我們使用SQL-on-Hadoop時,并沒有真正改變。 這是一項技術交換。 開始使用Hadoop進行資料分析的人們将Hadoop換成了他們的資料倉庫。 現在我們有能力做到這一點,以便他們可以做所有事情。 他們不必依靠别人來提出新的見解。 這建立了零時差分析的概念。 他們不必等待; 他們現在可以找到它。

鑽取非常簡單地分解查詢。 它允許您指定存儲插件,Drill可以連接配接到HBase,MapR-DB,MongoDB,Cassandra,并且其中的一個分支是為Apache Phoenix建構的。 目前正在為Elasticsearch建構連接配接器。 它可以查詢定界檔案,Parquet檔案,JSON檔案和Avro檔案。 在談到Drill時,我通常會談到Drill是SQL-on-everything查詢引擎。 您可以重複使用所有現有工具。 它與ODBC和JDBC驅動程式一起提供,是以您可以很輕松地将其插入開發環境中或BI工具中。

安全控制

Drill不需要第三方元存儲來確定安全。 它使用檔案系統安全性,這意味着沒有新東西要學習,也沒有複雜的東西要弄清楚。 您可以對視圖和資料存儲中的檔案進行分組安全性查詢。

通過鑽取視圖實作粒度安全

rdbms nosql_如何從RDBMS演變為NoSQL + SQL

這使您能夠在資料之上建立視圖,然後圍繞這些視圖建立安全組。 如果您是資料所有者,則可以這樣做,以便其他任何人都無法通路原始資料。 但是,如果我建立一個擺脫了信用​​卡号或将其屏蔽的視圖,那麼我可以做到這一點,以便您屬于可以讀取該視圖的小組。 您沒有直接通路資料的權限,但是通過安全模拟,它可以跳轉使用者,并確定可以按您所需的方式查詢資料。 請記住,它不需要其他安全存儲; 它使用檔案系統安全性。 使用Apache Drill,安全性是邏輯,精細,分散的,并通過治理提供自助服務。 當對資料運作SQL查詢時,這是一個非常引人注目的選擇。

  • 要深入了解将Drill與Yelp結合使用,請檢視此示範文稿 。

想了解更多? 檢視以下資源:

  • 開始免費的MapR按需教育訓練
  • 使用AWS在雲中進行測試駕駛練習
  • 了解如何使用MapR沙盒将Drill與Hadoop結合使用
  • 在10分鐘内試用Apache Drill
  • 為您的叢集下載下傳Apache Drill并開始探索
  • 檢視全面的教程和文檔
  • 深入了解健康選擇
  • 使用SQL + NoSQL的資料庫架構的演變
翻譯自: https://www.javacodegeeks.com/2016/02/evolve-rdbms-nosql-sql.html

rdbms nosql