Nessie 像git一樣管理你的數(shù)據(jù)

Nessie可以管理像git 分支,合并數(shù)據(jù)源等一些特性;

  • 受git的版本管理啟發(fā)
  • 跨表事務(wù)和可見性
  • 支持hive,spark,AWS Athena,dremio,管理其數(shù)據(jù)湖的數(shù)據(jù)
  • 深度和Apache Iceberg, Delta Lake and Hive 合作
  • 可以用docker image,AWS lamada 以及github 源碼運(yùn)行

nessie是一個(gè)基于對(duì)象存儲(chǔ)的服務(wù)和Library,你能維護(hù)多版本的數(shù)據(jù),以及利用gi t一樣的功能去管理數(shù)據(jù)湖的Branch和TAG;Nessie通過一下的表格式去進(jìn)行版本管理的特性;

  • apache Iceberg table
  • Delta Lake tables
  • Hive metastore table
  • SQL views

基本概念

Nessie深受GIT啟發(fā);主要的概念大都是來源于GIT的概念;在很多情況下,你能夠簡(jiǎn)單的替換Nessie中的一些概念;Nessie主要概念包括:

  • commit:在某個(gè)時(shí)間點(diǎn),所有表的一致性快照
  • Branch:用戶將commits增加到的一個(gè)引用位置
  • Tag: 一次特定提交指向
  • Hash: 一次特定提交生成的Hash字符串

除了上述一些概念,Nessie從一個(gè)main單一分支開始,并且指向特定的開始時(shí)間;用戶可以馬上向表中增加分支,如下偽代碼:

$ create t1
...
$ insert 2 records into t1
...
$ create t2
...
$ insert 2 records into t2
...

一個(gè)用戶可以使用Nessie的客戶端去看主分支上所有的分支;你可以看到每次提交自動(dòng)留下的操作記錄;

$ nessie log
hash4    t2 data added 
hash3    t2 created
hash2    t1 data added
hash1    t1 created

一個(gè)用戶可以在某個(gè)特定的時(shí)間t創(chuàng)建新的Tag; 在此之后,用戶能夠繼續(xù)改變表,但是在t時(shí)刻的數(shù)據(jù)版本將在Nessie中進(jìn)行維護(hù);

$ nessie tag mytag hash4

$ insert records into t1

$ select count(*) from t1 join t2
.. record 1 ..
.. record 2 ..
.. record 3 ..
.. 3 records ..

$ select count(*) from t1@mytag join t2@mytag
.. record 1 ..
.. record 2 ..
.. only 2 records ..
數(shù)據(jù)和元數(shù)據(jù)

Nessie 不需要拷貝你當(dāng)下的數(shù)據(jù);然后,他會(huì)按照你的數(shù)據(jù)集將文件進(jìn)行隔離;不管你使用的是spark,Hive,或者其他的工具,你定義的每個(gè)變化操作,增加,刪除你定義的數(shù)據(jù)源,都會(huì)改變你定義的表。Nessie會(huì)在每個(gè)時(shí)間點(diǎn)跟蹤哪些文件與表相關(guān),然后根據(jù)你的需要調(diào)用這些文件;

擴(kuò)展性和性能

Nessie 用來構(gòu)建大型的數(shù)據(jù)倉庫;Nessie 支持百萬級(jí)別的表和每秒一千次的提交;因?yàn)镹essie構(gòu)建在Iceberg和delta Lake之上,每個(gè)表中有百萬級(jí)別的文件;對(duì)此,Nessie可以支持比當(dāng)今最大數(shù)倉大幾個(gè)數(shù)量級(jí)的數(shù)據(jù)倉庫;這些可能性大多都依賴于Nessie中的 表元數(shù)據(jù)的事務(wù)管理的隔離;

技術(shù)上

Nessie 可以多種方式部署,同時(shí)他由多個(gè)基本的Nessie service 構(gòu)成;同時(shí)它通過REST APIS和簡(jiǎn)單的UI界面進(jìn)行暴露;這些服務(wù)像多個(gè)包一些去暴露Nessie的版本管理的能力

TODO

Nessie can be deployed in multiple ways and is composed primarily of the Nessie service, which exposes a set of REST APIs and a simple browser UI. This service works with multiple libraries to expose Nessie’s version control capabilities to common data management technologies.

Nessie was built as a Cloud native technology and is designed to be highly scalable, performant and resilient. Built on Java and leveraging Quarkus, it is compiled to a GraalVM native image that starts in less than 20ms. This makes Nessie work very well in Docker and FaaS environments. Nessie has a pluggable storage backend and comes pre-packaged with support for DynamoDB and local storage.

參考鏈接:

project nessie Introduction

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容