Notebook的持久化系统主要的类图如下:
各类主要的职责如下:
1) NotebookRepo是顶层接口,规定了持久化层基本的CRUD接口。
2) NotebookVersioned定义了Note的版本管理接口,目前其实现类只有GitNotebookRepo(该功能目前实现的不完善,既没有实现按照rev log进行过滤检索,界面上目前也没有检索或者是回退到具体某个版本的入口),采用JGit实现。
3) VFSNotebookRepo是zeppelin的默认实现类,使用apache common-vfs来实现多文件系统支持。(受配置参数zeppelin.notebook.storage控制,参见:ZeppelinConfiguration。
ZEPPELIN_NOTEBOOK_STORAGE("zeppelin.notebook.storage", VFSNotebookRepo.class.getName()),
目前common-vfs支持的文件系统虽然很多,但是由于Notebook持久化时需要RW、Create/Delete权限,实际上可用的只有如下:
File System |
Directory Contents |
Authentication |
Read |
Write |
Create/Delete |
Random |
Version |
Rename |
File |
No |
No |
Yes |
Yes |
Yes |
Read/Write |
No |
Yes |
FTP |
No |
Yes |
Yes |
Yes |
Yes |
Read |
No |
Yes |
FTPS |
No |
Yes |
Yes |
Yes |
Yes |
|
|
|
RAM |
No |
No |
Yes |
Yes |
Yes |
Read/Write |
No |
Yes |
RES |