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

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

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

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

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

基本概念

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

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

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

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

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

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

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

$ 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 不需要拷貝你當下的數(shù)據(jù);然后,他會按照你的數(shù)據(jù)集將文件進行隔離;不管你使用的是spark,Hive,或者其他的工具,你定義的每個變化操作,增加,刪除你定義的數(shù)據(jù)源,都會改變你定義的表。Nessie會在每個時間點跟蹤哪些文件與表相關,然后根據(jù)你的需要調用這些文件;

擴展性和性能

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

技術上

Nessie 可以多種方式部署,同時他由多個基本的Nessie service 構成;同時它通過REST APIS和簡單的UI界面進行暴露;這些服務像多個包一些去暴露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

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容