跳到内容

Lance 目录命名空间

Lance 目录命名空间是一个轻量级、简单的 1 级 Lance 命名空间,仅包含表列表。人们可以轻松地在任何本地或远程存储系统之上,使用 Lance 目录命名空间直接创建和使用 Lance 表。

目录命名空间映射到存储上的一个目录,我们称之为命名空间目录。Lance 表对应于命名空间目录中的一个子目录,其格式为<table_name>.lance。我们称之为表目录。考虑以下命名空间目录布局示例

.
└── /my/dir1/
    ├── table1.lance/
    │   ├── data/
    │   │   ├── 0aa36d91-8293-406b-958c-faf9e7547938.lance
    │   │   └── ed7af55d-b064-4442-bcb5-47b524e98d0e.lance
    │   ├── _versions/
    │   │   └── 9223372036854775707.manifest
    │   └── _indices/
    │       └── 85814508-ed9a-41f2-b939-2050bb7a0ed5-fts/
    │           └── index.idx 
    ├── table2.lance
    └── table3.lance

这描述了一个 Lance 目录命名空间,其命名空间目录位于/my/dir1/。它包含表table1table2table3,分别位于表目录/my/dirs/table1.lance/my/dirs/table2.lance/my/dirs/table3.lance

配置

Lance 目录命名空间接受以下配置属性

属性 必需 描述 默认 示例
表存储的命名空间根目录 当前工作目录 /my/dir, s3://bucket/prefix
storage.* 特定于存储的配置选项 storage.region=us-west-2

根路径

有 3 种方法可以指定根路径

  1. URI:遵循 RFC 3986 规范的 URI,例如 s3://mu-bucket/prefix
  2. 绝对 POSIX 存储路径:POSIX 标准存储中的绝对文件路径,例如 /my/dir
  3. 相对 POSIX 存储路径:POSIX 标准存储中的相对文件路径,例如 my/dir2, ./my/dir3。根的绝对路径应从当前工作目录派生。

存储选项

带有 storage. 前缀的属性在删除前缀后直接传递给底层的 OpenDAL 存储系统。例如,storage.region 在传递到存储层时变为 region。请访问 Apache OpenDAL 获取更多详情。

表存在性

如果具有特定名称的表目录存在并且包含非空的 _versions 子目录,则该表存在于 Lance 目录命名空间中。

在检查特定表是否存在或决定是否应列出表时,操作必须列出带有 _versions/ 前缀的对象并检查是否存在任何对象。如果目录存在但目录中没有文件,则应将其视为不存在。