日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

气象数据库分析

發(fā)布時間:2023/12/18 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 气象数据库分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

氣象數(shù)據(jù)庫分析

1、項目背景

存儲氣象數(shù)據(jù),用什么數(shù)據(jù)庫好呢

2、數(shù)據(jù)庫簡介

數(shù)據(jù)庫是存放數(shù)據(jù)的倉庫。簡單分為關(guān)系型數(shù)據(jù)庫與非關(guān)系型數(shù)據(jù)庫。

關(guān)系型數(shù)據(jù)庫,存儲的格式可以直觀地反映實體間的關(guān)系。關(guān)系型數(shù)據(jù)庫和常見的表格比較相似,關(guān)系型數(shù)據(jù)庫中表與表之間是有很多復(fù)雜的關(guān)聯(lián)關(guān)系的。 常見的關(guān)系型數(shù)據(jù)庫有Mysql,SqlServer等。在輕量或者小型的應(yīng)用中,使用不同的關(guān)系型數(shù)據(jù)庫對系統(tǒng)的性能影響不大,但是在構(gòu)建大型應(yīng)用時,則需要根據(jù)應(yīng)用的業(yè)務(wù)需求和性能需求,選擇合適的關(guān)系型數(shù)據(jù)庫。

非關(guān)系型數(shù)據(jù)庫(NoSQL):指的是分布式的、非關(guān)系型的、不保證遵循ACID原則的數(shù)據(jù)存儲系統(tǒng)。大量的NoSql數(shù)據(jù)庫如MongoDB[11]?、Redis、Memcache出于簡化數(shù)據(jù)庫結(jié)構(gòu)、避免冗余、影響性能的表連接、摒棄復(fù)雜分布式的目的被設(shè)計。

2.1 NoSQL數(shù)據(jù)庫分類

2.1.1 鍵值對數(shù)據(jù)庫 (Key/value databases)

鍵值對數(shù)據(jù)庫是最簡單的幾種NoSQL數(shù)據(jù)庫之一,由帶索引的鍵 (indexed key) 和其所對應(yīng)的值 (value) 組成。

當(dāng)給出一個鍵時,鍵值對數(shù)據(jù)庫可以通過哈希機(jī)制快速找到與其相關(guān)聯(lián)的值。哈希機(jī)制的時間復(fù)雜度為常數(shù)時間 (constant time),這意味著即使數(shù)據(jù)規(guī)模很大,鍵值對數(shù)據(jù)庫依然可以維持高性能。

鍵值對的鍵可以是任意類別的對象,但通常是一個字符串 (string)。鍵值對的值一般來說是模糊的BLOB類型(即:一串?dāng)?shù)據(jù)庫不解讀的字節(jié))。

鍵值對數(shù)據(jù)庫包括:Redis, Amazon DynamoDB, Riak以及Oracle NoSQL。一些像是Cassandra一樣的表格式的NoSQL數(shù)據(jù)庫也可以滿足鍵值對的需求。

思考:鍵值對數(shù)據(jù)庫都是一個key對應(yīng)一或多個value,而全球海洋數(shù)據(jù)是三個維度,經(jīng)緯度和時間對應(yīng)u風(fēng)或v風(fēng)數(shù)據(jù)。故排除這類分布式數(shù)據(jù)庫。

其實Redis應(yīng)該可以用key-list-list,就是list嵌套list實現(xiàn)多維,但費力。

2.1.2 文檔型數(shù)據(jù)庫 (Document databases)

文檔型數(shù)據(jù)庫由基本的鍵值對存儲模式而來,但是存儲數(shù)據(jù)的“文檔”則更為復(fù)雜一些。

每一個文檔都會被分配一個唯一的鍵 (key),用來調(diào)取文檔。這些數(shù)據(jù)庫是為了存儲、調(diào)取和管理面向文檔的信息(通常以JSON的格式存儲)而設(shè)計的。

因為文檔型數(shù)據(jù)庫可以檢閱文檔內(nèi)容,它們可以實現(xiàn)一些額外的調(diào)取處理。與要求靜態(tài)模式(schema) 的關(guān)系型數(shù)據(jù)庫管理系統(tǒng) (RDBMSs) 相比,文檔型數(shù)據(jù)庫則有著由文檔內(nèi)容定義的、更為靈活的模式。

文檔型數(shù)據(jù)庫的例子包括MongoDB和CouchDB。注意:一些關(guān)系型數(shù)據(jù)庫管理系統(tǒng)和非純存儲文檔的NoSQL數(shù)據(jù)庫也可以存儲和查詢JSON文檔,其中包括了Cassandra。

思考:同樣不適合全球海洋數(shù)據(jù)的處理

2.1.3 表格型數(shù)據(jù)庫 (Tabular databases)

表格型數(shù)據(jù)庫用行和列來存儲數(shù)據(jù),但是與傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)略有不同。

這種數(shù)據(jù)庫也被稱為寬表存儲 (wide-column stores) 或是分區(qū)行存儲 (partitioned row stores),他們提供把數(shù)據(jù)庫中屬于同一個分區(qū)的相關(guān)行分到同一數(shù)據(jù)副本的能力,從而達(dá)到更快查詢的目的。

與關(guān)系型數(shù)據(jù)庫管理系統(tǒng)不同的是,表格的格式并不是嚴(yán)格固定的。例如Apache Cassandra?并不要求表格中所有的行的每一列都要有值。

與鍵值對和文檔型數(shù)據(jù)庫一樣,表格型數(shù)據(jù)庫也使用哈希函數(shù)來調(diào)取表格中的記錄。

表格型數(shù)據(jù)庫包括:Cassandra、HBase以及Google Bigtable。

思考:應(yīng)該最后就是從表格型數(shù)據(jù)庫中找一個開源的、合適的來進(jìn)行數(shù)據(jù)處理。其中HBase要收費,暫時放棄。

還有圖型數(shù)據(jù)庫和混合型數(shù)據(jù)庫,但應(yīng)該對全球海洋數(shù)據(jù)處理不太合適,暫且不考慮。

3、所需數(shù)據(jù)庫要求

? 首先要知道我們要處理的這全球海洋數(shù)據(jù)的特點:

  • 數(shù)據(jù)量巨大,大約180g,為1990-2021年的全球海洋u風(fēng)v風(fēng)數(shù)據(jù)
  • 為nc文件,數(shù)據(jù)具有多維的特點,具有三個緯度:經(jīng)度、緯度、時間
  • ?目前簡單分析,可以知道最少要滿足以下三個要求:

  • 可以提供超大規(guī)模的存儲容量,查詢低延遲,性能好
  • 屬于開源數(shù)據(jù)庫,節(jié)約項目成本
  • 具有實操性,可以應(yīng)用到項目,且最好有c++API,便于之后的項目流程
  • 4、目前備選方案

    4.1 收費數(shù)據(jù)庫

    ??查閱知網(wǎng)相關(guān)文獻(xiàn),搜索數(shù)據(jù)庫處理氣象數(shù)據(jù)關(guān)鍵詞,知道了GBase數(shù)據(jù)庫、虛谷數(shù)據(jù)庫、TableStore、Hbase等數(shù)據(jù)庫等可以較適合地處理海量氣象數(shù)據(jù)。特別是TableStore數(shù)據(jù)庫,TableStore是一款阿里自研的分布式NoSQL服務(wù),可以提供超大規(guī)模的存儲容量,支撐超大規(guī)模的并發(fā)訪問和低延遲的性能,可以很好的解決氣象數(shù)據(jù)的規(guī)模和查詢性能問題,并且該數(shù)據(jù)庫有基于TableStore的海量氣象格點數(shù)據(jù)解決方案實戰(zhàn)等文章可以查閱學(xué)習(xí),有諸多便利。

    但因為這些數(shù)據(jù)庫并非開源,成本較高,且因為非開源故用戶少,相關(guān)數(shù)據(jù)庫學(xué)習(xí)方面不如開源數(shù)據(jù)庫便利,故暫且不考慮。

    思考:如果考慮收費數(shù)據(jù)庫的話,最好的是TableStore。

    4.2 MySQL數(shù)據(jù)庫

    開始潛意識認(rèn)為MySQL這種關(guān)系型數(shù)據(jù)庫不適合做為該項目的數(shù)據(jù)庫。阿里巴巴《Java開發(fā)手冊》提出:單表行數(shù)超過500萬行或者單表容量超過2GB,才推薦進(jìn)行分庫分表。但是如果按照時間來進(jìn)行讀取數(shù)據(jù),大約一個生成的特定時刻全球海洋數(shù)據(jù)的txt文件里大約為480*61個數(shù)據(jù)。一年有722個這樣的txt文件,一共有31年,存儲肯定是沒問題,目前不知道具體實現(xiàn)細(xì)節(jié)是怎樣的,能不能用MySQL的分庫分表操作來實現(xiàn)功能,以及最后查詢時延會不會過大。

    有CSDN相關(guān)文檔使用python爬取全國天氣數(shù)據(jù)并導(dǎo)入MySQL數(shù)據(jù)庫表提供一點思路,但因數(shù)據(jù)量不同故或許存在許多問題,具體能否用MySQL進(jìn)行項目應(yīng)用有待商榷。

    思考:實在沒辦法的時候,可以考慮,應(yīng)該是可以做到分庫分表始實現(xiàn)所需要求的,但是應(yīng)該會事倍功半。

    4.3 cassandra數(shù)據(jù)庫

    Cassandra是一套開源分布式NoSQL數(shù)據(jù)庫系統(tǒng)。它最初由Facebook開發(fā),用于儲存收件箱等簡單格式數(shù)據(jù),集GoogleBigTable的數(shù)據(jù)模型與Amazon Dynamo的完全分布式的架構(gòu)于一身Facebook于2008將 Cassandra 開源,此后,由于Cassandra良好的可擴(kuò)展性,被Digg、Twitter等知名Web 2.0網(wǎng)站所采納,成為了一種流行的分布式結(jié)構(gòu)化數(shù)據(jù)存儲方案。

    Cassandra是一個混合型的非關(guān)系的數(shù)據(jù)庫,類似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存儲系統(tǒng))更豐富,但支持度卻不如文檔存儲MongoDB(介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的開源產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型)。

    主要是屬于表格型數(shù)據(jù)庫,且開源。表格型數(shù)據(jù)庫用行和列來存儲數(shù)據(jù),但是與傳統(tǒng)的數(shù)據(jù)庫管理系統(tǒng)略有不同。與鍵值對和文檔型數(shù)據(jù)庫一樣,表格型數(shù)據(jù)庫也使用哈希函數(shù)來調(diào)取表格中的記錄。

    思考:表格型數(shù)據(jù)庫,且開源,目前是最優(yōu)選擇,如果后續(xù)沒有更合適的數(shù)據(jù)庫,優(yōu)先拿此數(shù)據(jù)庫進(jìn)行嘗試。

    4.4 Google Bigtable數(shù)據(jù)庫

    Bigtable是一個分布式多維映射表,表中的數(shù)據(jù)通過一個行關(guān)鍵字(Row Key)、一個列關(guān)鍵字(Column Key)以及一個時間戳(Time Stamp)進(jìn)行索引。Bigtable對存儲在其中的數(shù)據(jù)不做任何解析,一律看做字符串,具體數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)需要用戶自行處理。

    思考:也是表格型數(shù)據(jù)庫,開源,全球海洋數(shù)據(jù)可以用這個數(shù)據(jù)庫,行為經(jīng)度,列為緯度,時間戳為時間。理論上應(yīng)該可以實現(xiàn)。還未具體查閱。

    4.5 SequoiaDB巨杉數(shù)據(jù)庫

    進(jìn)入巨杉數(shù)據(jù)庫的關(guān)鍵技術(shù)——分區(qū)概念,我們支持兩種分區(qū),一種是水平分區(qū),另一種是垂直分區(qū)。

    水平分區(qū): 這里提到兩個概念,一是集合空間(CS),二是集合(CL),我們基本數(shù)據(jù)存儲單元是集合,可以等同于傳統(tǒng)關(guān)系型數(shù)據(jù)庫里的表,水平分區(qū)的概念是在集合里,可以選定一個字段或者多個字段作為水平分區(qū)的鍵(key)。

    巨杉數(shù)據(jù)庫會根據(jù)你選定的鍵或者鍵值,把數(shù)據(jù)對應(yīng)到集合對應(yīng)的所有分區(qū)。水平分區(qū)最大的好處是可以把多個節(jié)點組成復(fù)制組,你可以把數(shù)據(jù)均勻的分布到多個數(shù)據(jù)節(jié)點或者多個復(fù)制組,避免單一存儲或者單一節(jié)點帶來的瓶頸,對于分布式數(shù)據(jù)庫來講是必不可少的特性。

    垂直分區(qū): 垂直分區(qū)更多的跟業(yè)務(wù)邏輯相關(guān),常見信息是流水表,如果你想保存銀行過去10年甚至20年的交易流水表,這是海量天文數(shù)字的數(shù)據(jù)。因此,我們可以將龐大的數(shù)據(jù)從邏輯意義上區(qū)分開,按時間戳作為分隔的字段。

    多維分區(qū):

    多維分區(qū)機(jī)制,把水平分區(qū)和垂直分區(qū)兩種方式結(jié)合在一起使用。這跟垂直分區(qū)的圖類似,在每一個子集合內(nèi)部可以用水平分區(qū),均勻打散到多個不同的物理存儲上。

    思考:應(yīng)該是屬于鍵值型數(shù)據(jù)庫的一種,但是它可以選定一個字段或多個字段作為key,而非固定一個字段作為Key,如果選經(jīng)緯度、時間作為key,應(yīng)該就可以滿足項目要求。重點是開源,但不為首選,還是表格型數(shù)據(jù)庫最合適。


    總結(jié)

    以上是生活随笔為你收集整理的气象数据库分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。