新聞中心
近年來,隨著云計算、大數(shù)據(jù)、等新技術的發(fā)展,BaaS(Backend as a Service)應用越來越普及。BaaS應用以服務的形式提供后端的功能,包括數(shù)據(jù)存儲、身份驗證、推送服務、消息隊列等等。而在BaaS應用中的數(shù)據(jù)存儲中,數(shù)據(jù)庫的選擇是非常關鍵的一步。在選擇何種數(shù)據(jù)庫更適合低層結構時,需要考慮多個方面因素。

為通江等地區(qū)用戶提供了全套網(wǎng)頁設計制作服務,及通江網(wǎng)站建設行業(yè)解決方案。主營業(yè)務為網(wǎng)站設計、成都做網(wǎng)站、通江網(wǎng)站設計,以傳統(tǒng)方式定制建設網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
一、適合低層結構特點
在選擇何種數(shù)據(jù)庫更適合低層結構之前,需要了解低層結構的特點。低層結構通常是指后端服務所涉及的實際數(shù)據(jù)、物理設備等。低層結構的特點包括:
1. 存儲量大、種類廣:低層結構中包含各種類型的數(shù)據(jù),如結構化數(shù)據(jù)、半結構化數(shù)據(jù)、非結構化數(shù)據(jù)等等,存儲量也非常大。
2. 存取速度快:低層結構中的數(shù)據(jù)在應用中需要快速存取,能夠支持高并發(fā)讀寫。
3. 高可靠性:低層結構中的數(shù)據(jù)是應用的核心內(nèi)容,需要保障數(shù)據(jù)的安全性和可靠性。
4. 易擴展:低層結構需要滿足可擴展性,隨著應用規(guī)模的擴大,數(shù)據(jù)存儲量也需要隨之擴展。
二、不同數(shù)據(jù)庫類型介紹
在BaaS應用中,常用的數(shù)據(jù)庫類型包括關系型數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫、內(nèi)存數(shù)據(jù)庫、圖數(shù)據(jù)庫等。不同的數(shù)據(jù)庫類型在適合低層結構上各有優(yōu)劣:
1. 關系型數(shù)據(jù)庫
關系型數(shù)據(jù)庫是一種基于關系模型的數(shù)據(jù)庫管理系統(tǒng),通常采用SQL語言來操作數(shù)據(jù)。因其穩(wěn)定性、可靠性、數(shù)據(jù)完整性方面的優(yōu)勢,關系型數(shù)據(jù)庫長期是企業(yè)信息化中主流的存儲方式之一。關系型數(shù)據(jù)庫適合于存儲結構化數(shù)據(jù),如訂單、用戶信息、賬單等,但在存儲非結構化數(shù)據(jù)和動態(tài)數(shù)據(jù)時可能不如NoSQL數(shù)據(jù)庫。
2. NoSQL數(shù)據(jù)庫
NoSQL(Not Only SQL)數(shù)據(jù)庫是一種新興的數(shù)據(jù)庫系統(tǒng),它不使用SQL語言來操作數(shù)據(jù),而是通過鍵值對、文檔、列族等方式來存儲數(shù)據(jù)。NoSQL數(shù)據(jù)庫通常具有分布式、橫向擴展、高性能、高可用等特點,適合非結構化數(shù)據(jù)的存儲,如社交網(wǎng)絡、日志、傳感器數(shù)據(jù)等。但是在一些對數(shù)據(jù)一致性要求較高的應用場景中,NoSQL數(shù)據(jù)庫可能不如關系型數(shù)據(jù)庫。
3. 內(nèi)存數(shù)據(jù)庫
內(nèi)存數(shù)據(jù)庫(In-Memory Database)是指將數(shù)數(shù)據(jù)存儲在內(nèi)存中的數(shù)據(jù)庫,它能夠提高數(shù)據(jù)訪問速度和響應速度。內(nèi)存數(shù)據(jù)庫適合那些需要高并發(fā)、實時響應、繁忙的應用場景。但由于存儲器代價昂貴,內(nèi)存數(shù)據(jù)庫相對于磁盤數(shù)據(jù)庫來說存儲的代價高。
4. 圖數(shù)據(jù)庫
圖數(shù)據(jù)庫是一種專門用于存儲圖形數(shù)據(jù)的數(shù)據(jù)庫,它的特點是能夠高效地存儲和遍歷大規(guī)模圖形數(shù)據(jù)。圖數(shù)據(jù)庫適合于存儲具有復雜關系的數(shù)據(jù),如社交網(wǎng)絡中的用戶關系、交通規(guī)劃中的路線規(guī)劃等。
三、如何選擇最適合低層結構的數(shù)據(jù)庫
在選擇何種數(shù)據(jù)庫更適合低層結構時,需要綜合考慮存儲量、存取速度、高可靠性、易擴展等多方面的因素。
1. 存儲量大、種類廣
對于存儲量大、種類廣的低層結構,NoSQL數(shù)據(jù)庫是更好的選擇,如MongoDB、Cassandra等。NoSQL數(shù)據(jù)庫的架構特點使得其能夠高效地處理大規(guī)模的數(shù)據(jù),也能夠靈活地進行非結構化和半結構化數(shù)據(jù)的存儲。
2. 存取速度快
對于存取速度較快的低層結構,如金融交易數(shù)據(jù)、社交網(wǎng)絡等,內(nèi)存數(shù)據(jù)庫是更好的選擇,如Redis、Memcached等。內(nèi)存數(shù)據(jù)庫能夠在大量的訪問請求中提供高并發(fā)、實時響應、快速存取等功能。同時,內(nèi)存數(shù)據(jù)庫也適合于一些需要進行一些臨時性數(shù)據(jù)的存儲,比如購物車的緩存等。
3. 高可靠性
對于對可靠性要求比較高的低層結構,如電商網(wǎng)站的用戶信息、支付信息等,關系型數(shù)據(jù)庫是更好的選擇,如MySQL、Oracle等。關系型數(shù)據(jù)庫相對于NoSQL數(shù)據(jù)庫有更好的數(shù)據(jù)一致性和可靠性保證,其ACID特性可以確保數(shù)據(jù)的安全性和完整性。
4. 易擴展
對于未來業(yè)務規(guī)模擴展需要的低層結構,需要選擇易擴展的數(shù)據(jù)庫。NoSQL數(shù)據(jù)庫具有較好的可擴展性,可以方便地進行水平擴展,支持大量節(jié)點構建分布式系統(tǒng),如Cassandra、HBase等。
四、結論
在選擇何種數(shù)據(jù)庫更適合低層結構時,需要根據(jù)低層結構的特點綜合考慮存儲量、存取速度、高可靠性、易擴展等多方面的因素。不同類型的數(shù)據(jù)庫適合不同的數(shù)據(jù)類型和業(yè)務場景,需要結合實際需求進行選擇。在實際應用中,也可以采用多個類型的數(shù)據(jù)庫組合來存儲低層結構中的數(shù)據(jù)。每種類型的數(shù)據(jù)庫都有各自的優(yōu)勢和劣勢,選擇最適合低層結構的數(shù)據(jù)庫可以提高數(shù)據(jù)的讀寫效率、保障數(shù)據(jù)的安全性和可靠性,最終實現(xiàn)BaaS應用的高效運作。
成都網(wǎng)站建設公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設,提供企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,響應式網(wǎng)站制作,設計師量身打造品牌風格,熱線:028-86922220為什么使用Hive?Hive提供了什么?Hive支持哪些用戶
為什么使用Hive?
為什么使用Hive?那么,在哪里使用Hive呢?在載入了60億行(經(jīng)度、維度、時間、數(shù)據(jù)值、高度)數(shù)據(jù)集到MySQL后,系統(tǒng)崩潰了,并經(jīng)歷過數(shù)據(jù)丟失。這可能部分是因為我們最初的策略是將所有的數(shù)據(jù)都存儲到單一的一張表中了。后來,我們調(diào)整了策略通過數(shù)據(jù)集和參數(shù)進行分表,這有所幫助但也因此引入了額外的消耗,而這并非是我們愿意接受的。
相反,我們決定嘗試使用Apache Hive技術。我們安裝了Hive 0.5 + 20,使用CDHv3和Apache Hadoop(+ 320)。CDHv3還包含有許多其他相關工具,包括Sqoop和Hue這些在我們的架構中都標識出來了,如圖23-3底部所示。
我們使用Apache Sqoop轉儲數(shù)據(jù)到Hive中,然后纖滑通過寫一個Apache OODT包裝器,來使Hive按照空間/時間約束查詢數(shù)據(jù),然后將結果提供給RCMET和其他用戶(圖23-2中間部分顯示)。RCMES集群的完整的架構如圖23- 3所示。我們有5臺機器,包括圖中所示的一個主/從配置,通過一個運行GigE的私人網(wǎng)進行連接。
Hive提供了什么
Photobucket公司使用Hive的主要目標是為業(yè)務功能、系統(tǒng)性能和用戶行為提供答案。為了滿足這些需求,我們每晚都要通過Flume從數(shù)百臺服務器上的MySQL數(shù)據(jù)庫中轉儲來自Web服務器和自定義格式日志TB級別的數(shù)據(jù)。這些數(shù)據(jù)有助于支持整個公司許多組織,比如行政管理、廣告、客戶支持、產(chǎn)品開發(fā)和操作,等等。對于歷史數(shù)據(jù),我們保持所有MySQL在每月的之一天創(chuàng)建的所有的毀培臘數(shù)據(jù)作為分區(qū)數(shù)據(jù)并保留30天以上的日志文件。Photobucket使用一個定制的ETL框架來將MySQL數(shù)據(jù)庫中數(shù)據(jù)遷移到Hive中。使用Flume將日志文件數(shù)據(jù)寫入到HDFS中并按照預定的Hive流程進行處理。
Hive支持的用戶有哪些
行政管理依賴于使用Hadoop提供一般業(yè)務健康狀況的報告。Hive允許我們解析結構化數(shù)據(jù)庫數(shù)據(jù)和非結構化的點擊流數(shù)據(jù),以及業(yè)務所涉及的數(shù)據(jù)格式進行讀取。
廣告業(yè)務使用Hive篩選歷史數(shù)據(jù)來對廣告目標進行預測和定義配額。產(chǎn)品開發(fā)無疑是該組織中產(chǎn)生更大數(shù)量的特定的查詢的用戶了。對于任何用戶群,時間間隔變化或隨時間而變化。Hive是很重要的,因為它允許我們通過對在當前和歷史數(shù)據(jù)中運行A / B測試來判斷在一個快速變化的用戶環(huán)境中新產(chǎn)品的相關特性。
在Photobucket公司中,為我們的用戶提供一流的系統(tǒng)是最重要的目標。從操作的角度來看,Hive被用來匯總生成跨多個維度的數(shù)據(jù)。在公司里知道更流行的媒體、用戶、參考域是非常重要的??刂瀑M中租用對于任何組織都是重要的。一個用戶可以快速消耗大量的系統(tǒng)資源,并顯著增加每月的支出。Hive可以用于識別和分析出這樣的惡意用戶,以確定哪些是符合我們的服務條款,而哪些是不符合的。也可以使用Hive對一些操作運行A / B測試來定義新的硬件需求和生成ROI計算。Hive將用戶從底層MapReduce代碼解放出來的能力意味著可以在幾個小時或幾天內(nèi)就可以獲得答案,而不是之前的數(shù)周。
Hive中的數(shù)據(jù)庫
Hive中數(shù)據(jù)庫的概念本質上僅僅是表的一個目錄或者命名空間。然而,對于具有很多組和用戶的大集群來說,這是非常有用的,因為這樣可以避免表命名沖突。通常會使用數(shù)據(jù)庫來將生產(chǎn)表組織成邏輯組。
如果用戶沒有顯式指定數(shù)據(jù)庫,那么將會使用默認的數(shù)據(jù)庫default。
下面這個例子就展示了如何創(chuàng)建一個數(shù)據(jù)庫:
hive> CREATE DATABASE financials;
如果數(shù)據(jù)庫financials已經(jīng)存在的話,那么將會拋出一個錯誤信息。使用如下語句可以避免在這種情況下拋出錯誤信息:
hive> CREATE DATABASE IF NOT EXISTS financials;
雖然通常情況下用戶還是期望在同名數(shù)據(jù)庫已經(jīng)存在的情況下能夠拋出警告信息的,但是IF NOT EXISTS這個子句對于那些在繼續(xù)執(zhí)行之前需要根據(jù)需要實時創(chuàng)建數(shù)據(jù)庫的情況來說是非常有用的。
在所有的數(shù)據(jù)庫相關的命令中,都可以使用SCHEMA這個關鍵字來替代關鍵字TABLE。
隨時可以通過如下命令方式查看Hive中所包含的數(shù)據(jù)庫:
hive> SHOW DATABASES;
default
financials
hive> CREATE DATABASE human_resources;
hive> SHOW DATABASES;
default
financials
human_resources
如果數(shù)據(jù)庫非常多的話,那么可以使用正則表達式匹配來篩選出需要的數(shù)據(jù)庫名,正則表達式這個概念,將會在第6.2.3節(jié)“Like和RLike”介紹。下面這個例子展示的是列舉出所有以字母h開頭,以其他字符結尾(即.*部分含義)的數(shù)據(jù)庫名:
hive> SHOW DATABASES LIKE ‘h.*’;
human_resources
hive> …
Hive會為每個數(shù)據(jù)庫創(chuàng)建一個目錄。數(shù)據(jù)庫中的表將會以這個數(shù)據(jù)庫目錄的子目錄形式存儲。有一個例外就是default數(shù)據(jù)庫中的表,因為這個數(shù)據(jù)庫本身沒有自己的目錄。
數(shù)據(jù)庫所在的目錄位于屬性hive.metastore.warehouse.dir所指定的頂層目錄之后,這個配置項我們已經(jīng)在前面的第2.5.1節(jié)“本地模式配置”和第2.5.2節(jié)“分布式模式和偽分布式模式配置”中進行了介紹。假設用戶使用的是這個配置項默認的配置,也就是/user/hive/warehouse,那么當我們創(chuàng)建數(shù)據(jù)庫financials時,Hive將會對應地創(chuàng)建一個目錄/user/hive/warehouse/financials.db。這里請注意,數(shù)據(jù)庫的文件目錄名是以.db結尾的。
用戶可以通過如下的命令來修改這個默認的位置:
hive> CREATE DATABASE financials
> LOCATION ‘/my/preferred/directory’;
用戶也可以為這個數(shù)據(jù)庫增加一個描述信息,這樣通過DESCRIBE DATABASE 命令就可以查看到該信息。
hive> CREATE DATABASE financials
> COMMENT ‘Holds all financial tables’;
hive> DESCRIBE DATABASE financials;
financials Holds all financial tables
從上面的例子中,我們可以注意到,DESCRIEB DATABASE語句也會顯示出這個數(shù)據(jù)庫所在的文件目錄位置路徑。在這個例子中,URI格式是hdfs。如果安裝的是MapR,那么這里就應該是maprfs。對于亞馬遜彈性MapReduce(EMR)集群,這里應該是hdfs,但是用戶可以設置hive.metastore.warehouse.dir為亞馬遜S3特定的格式(例如,屬性值設置為s3
前面DESCRIBE DATABASE語句的輸出中,我們使用了master-server來代表URI權限,也就是說應該是由文件系統(tǒng)的“主節(jié)點”(例如,HDFS中運行NameNode服務的那臺服務器)的服務器名加上一個可選的端口號構成的(例如,服務器名:端口號這樣的格式)。如果用戶執(zhí)行的是偽分布式模式,那么主節(jié)點服務器名稱就應該是localhost。對于本地模式,這個路徑應該是一個本地路徑,例如
如果這部分信息省略了,那么Hive將會使用Hadoop配置文件中的配置項fs.default.name作為master-server所對應的服務器名和端口號,這個配置文件可以在$HADOOP_HOME/conf這個目錄下找到。
需要明確的是,
warehouse/financials.db是等價的,其中master-server是主節(jié)點的DNS名和可選的端口號。
為了保持完整性,當用戶指定一個相對路徑(例如,some/relative/path)時,對于HDFS和Hive,都會將這個相對路徑放到分布式文件系統(tǒng)的指定根目錄下(例如,
為了腳本的可移植性,通常會省略掉那個服務器和端口號信息,而只有在涉及到另一個分布式文件系統(tǒng)實例(包括S3存儲)的時候才會指明該信息。
此外,用戶還可以為數(shù)據(jù)庫增加一些和其相關的鍵-值對屬性信息,盡管目前僅有的功能就是提供了一種可以通過DESCRIBE DATABASE EXTENDED 語句顯示出這些信息的方式:
hive> CREATE DATABASE financials
> WITH DBPROPERTIES (‘creator’ = ‘Mark Moneybags’, ‘date’ = ”);
hive> DESCRIBE DATABASE financials;
financials
hive> DESCRIBE DATABASE EXTENDED financials;
financials
{date=, creator=Mark Moneybags);
USE命令用于將某個數(shù)據(jù)庫設置為用戶當前的工作數(shù)據(jù)庫,和在文件系統(tǒng)中切換工作目錄是一個概念:
hive> USE financials;
現(xiàn)在,使用像SHOW TABLES這樣的命令就會顯示當前這個數(shù)據(jù)庫下所有的表。
不幸的是,并沒有一個命令可以讓用戶查看當前所在的是哪個數(shù)據(jù)庫!幸運的是,在Hive中是可以重復使用USE…命令的,這是因為在Hive中并沒有嵌套數(shù)據(jù)庫的概念。
可以回想下,在第2.7.2節(jié)“變量和屬性”中提到過,可以通過設置一個屬性值來在提示符里面顯示當前所在的數(shù)據(jù)庫(Hive v0.8.0版本以及之后的版本才支持此功能):
hive> set hive.cli.print.current.db=true;
hive (financials)> USE default;
hive (default)> set hive.cli.print.current.db=false;
hive> …
最后,用戶可以刪除數(shù)據(jù)庫:
hive> DROP DATABASE IF EXISTS financials;
IF EXISTS子句是可選的,如果加了這個子句,就可以避免因數(shù)據(jù)庫finanacials不存在而拋出警告信息。
默認情況下,Hive是不允許用戶刪除一個包含有表的數(shù)據(jù)庫的。用戶要么先刪除數(shù)據(jù)庫中的表,然后再刪除數(shù)據(jù)庫;要么在刪除命令的最后面加上關鍵字CASCADE,這樣可以使Hive自行先刪除數(shù)據(jù)庫中的表:
hive> DROP DATABASE IF EXISTS financials CASCADE;
如果使用的是RESTRICT這個關鍵字而不是CASCADE這個關鍵字的話,那么就和默認情況一樣,也就是,如果想刪除數(shù)據(jù)庫,那么必須先要刪除掉該數(shù)據(jù)庫中的所有表。
如果某個數(shù)據(jù)庫被刪除了,那么其對應的目錄也同時會被刪除。
baas低層用什么數(shù)據(jù)庫的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關于baas低層用什么數(shù)據(jù)庫,BaaS應用中選擇何種數(shù)據(jù)庫更適合低層結構?,為什么使用Hive?Hive提供了什么?Hive支持哪些用戶的信息別忘了在本站進行查找喔。
成都創(chuàng)新互聯(lián)科技有限公司,經(jīng)過多年的不懈努力,公司現(xiàn)已經(jīng)成為一家專業(yè)從事IT產(chǎn)品開發(fā)和營銷公司。廣泛應用于計算機網(wǎng)絡、設計、SEO優(yōu)化、關鍵詞排名等多種行業(yè)!
文章題目:BaaS應用中選擇何種數(shù)據(jù)庫更適合低層結構?(baas低層用什么數(shù)據(jù)庫)
當前URL:http://www.dlmjj.cn/article/djoosed.html


咨詢
建站咨詢
