@cloudbitmaps/azure-blob

中文文档
0.27.0发布于 2026/11/03Apache-2.0TypeScriptES Module构建来源已验证近 30 天下载 1742

用于 CloudBitmaps 的 Azure Blob 存储器

中文使用文档
文档目录5 节
  1. 安装
  2. 使用
  3. 生产前
  4. 文档
  5. 许可证

@ cloudbitmaps/ azure- bolob (英语)

Azure Blob 存储用于 云位图。 。 。 . 一个容器 抱着你的世代和他们的指针 所以有 没有第二次服务运行.

仅限无害环境管理,节点22.12. 使用 import; 用于 require()时标和类型脚本,参见 常见的JS、快取和类型脚本。 。 。 .

前1.0:API和上盘格式仍然可以更改. 在npm上,这些文件与它们所运送的版本相符;在GitHub上,它们描述 main,更改日志则说每个版本都改变了什么.

安装

pnpm add @cloudbitmaps/roaring @cloudbitmaps/azure-blob

安装每张的同版本 @cloudbitmaps/* 软件包:它们一起发行,每个包都标出准确的版本 core 它是与建造的.

@azure/storage-blob (单位:千美元)^12.23.0)是这个包的真正依赖性,所以安装是整个步骤. A 类 containerClient 您必须来自12.23.0或以后: 驾驶员自己的测试在他们运行在12.0.0, 12.122.0, 12.17.0和 12.18. (没有稳定在12.19至12.22之间): 最老的12.x缺乏驾驶员呼叫的成员,例如 deleteIfExists,并在12.18.0上,地下最新的发布,一个读取会将部分路面降低为读取的超时或不会在测试限度内结束,被拒绝的指针读取不会放出其请求. @cloudbitmaps/core引擎在下面,随它而来,而你却不给它起名.

使用

import { CloudRoaring } from '@cloudbitmaps/roaring';
import { AzureBlobStorage } from '@cloudbitmaps/azure-blob';

const store = new CloudRoaring({
  storage: new AzureBlobStorage({
    connectionString: process.env.AZURE_STORAGE_CONNECTION_STRING,
    container: 'bitmaps',
    prefix: 'cr',
  }),
});

await store.load({ segment: 'active-users' }, [1, 2, 3]);
await store.segment('active-users').has(2); // true

任何其他密钥都会被姓名拒绝.

选项它会做什么
connectionString 财务报告和审定财务报表 container为您建立容器客户端
containerClient您自己的容器扫描客户端, 而不是上述两个客户端; 拒绝给予两者
prefix此商店所写每件事的密钥前缀
blockBytes所显示的区块大小(默认为8 MiB;上传缓冲一次一个区块并复制到一个机构来进行分级,因此在冲出时最多能保持大约两倍的区块大小,默认情况下为16 MiB,取自驱动程序代码). 超过Azure的4000个米B区块限制 ValidationError
maxObjectBytes最大块( 默认) blockBytes ×50,000,约390 GiB). 50 000个4 000个米B以上的区块,大约190.7个TiB,是一种 ValidationError
readTimeoutMs每一个读取请求可能需要多长时间, 包括它的身体, 在它被切除之前 TransientError 商店的读取重试重复( 默认) 0关闭)
conditionalDelete服务是否适用 ifMatch 在“删除 Blob” 上: 登记簿将删除一行被删除, 而不是留下墓碑, 每一份完整的列表都读取, 而存储的一半只删除了“ 擦除” 的持有人, 而“ 擦除” 则读取“ 擦除” 。 默认情况下: Azure Blob 适用先决条件,而Azulite 也适用先决条件. 有快照的blob拒绝删除(409 SnapshotsPresent),而扫荡则算入其中 purgeFaults。需要一个可以删除登记册前缀上blobs的角色

生产前

  • 此后端位于已验证的信封外. 它通过与S3相同的套房,但证明 缩放和校正在S3上完成。 你是一个早期用户.
  • 运行 await store.preflight() 第一次载货之前. 它会写、试图再写、读、列出和删除一个探测器 浏览登记簿和答案 { ok, checks }它的生命周期检查总是 unchecked 这里(见下文),所以跑步还需要手边检查规则。 这个 不检查删除或版本后的读取, 除其他外: 完整列表。 。 。 .
  • 授予容器的数据权限. 图书馆写块, 承诺块列表, 读取blobs及其 属性、列表和删除. Storage Blob Data Contributor 在容器上覆盖他们全部。 连接 字符串带有账户密钥, 账户密钥的授予要多得多 : containerClient 由管理下的身份构建.
  • 写入保证 骑着blob ETags和 If-None-Match: *,所以没有其他 需要启动.
  • 切勿添加寿命周期规则, 以终止当前 blobs 或 registry/ 前缀.
  • await backend.checkLifecycle() 总是 unchecked 在这里. 寿命周期管理政策属于存储 ,在管理平面上,blob客户端无法读取,而本软件包不需管理依赖. 内容 detail 给 az storage account management-policy show 命令和寻找什么,包括一条没有的规则 prefixMatch (单位:千美元)从代码中检查生命周期规则) (中文(简体) ).
  • 写作的瞬间失败 TransientError,而写作可能已经着陆,也可能没有着陆. 重开电话, 或检查 store.generations(ref)。每个书写都会被随机的ID标记,在冲突时,会读取存储的blob 背面:一个携带写作本身的id是成功的,其他的都是 WriteConflictError。登记行 复读并不确定,因为一个作家在复读之前, 将一个落地的字写成 上报冲突,所以登记簿将一行中的每个冲突都扔出为 unsettledConflict。一个负载的发布 重新读取行,并且只在指针仍然为它的一代和行命名时找到其写作 pointerId 是它自己写的;被新的负载所取代,它报告 superseded,以及 segment.load-refused 事件携带 unanswered: true,就像一个没有答案的写完之后。 输掉普通赛车的负载被拒绝也一样 注册,因为驱动程序无法看到客户端的重试 。 翻来翻去再读一遍,直到 指针正对着它的目标 在它发出的信号上 标记存在是因为客户端自己的重试没有按要求进行 开关。 重试后又发来一封信 503 ServerBusy 或一个 500 OperationTimedOut。其行写入的负载 没有答案读行 并发送一个新的比较和抽取 从它,最多三次, 而政策运行 每一个下方:一个从未回答的注册,在投出负载之前,花费高达保险单尝试的四倍 TransientError 并保留其对象: 在 SDK 的默认时间表下, 每笔约 16 s (它等待 0, 4 s, 然后是 12 s) 因此,大约64 s为四人写作, 加上高达3.5 s的出版社自己的等待(来源于此) 时间表,未计量)。 一个保留扫描 tombstoneGraceMs 必须在窗口上方;默认为24小时.
  • 设定 readTimeoutMs 绑住一个书摊. 没有客户端设置 : SDK 的每行计时器一旦停止 反应头已经到来,所以只要连接保持畅通 就会被拖住 与 readTimeoutMs 设定,每个读取请求(读取范围、尾读属性及其下载、注册行) 读取),未完成,包括正文,其中许多毫秒被中止并投掷 TransientError,该 商店的读取重试运行。 它关闭,除非你启动它。 钟从呼叫开始进入SDK,所以等待 用于套接字或证书的值。 书写,删除和列表不计时.
  • 驾驶员在丢弃前会校正其识别出的错误的证书 . SDK保持签名请求 err.request 财务报告和审定财务报表 err.response.request页:1 Authorization 页眉 (e)SharedKey <account>:<signature>或无记名标志) sig= 在它的 URL 中,您管道中的任何标题都会添加(饼干, API 密钥, 客户提供的密钥) 。 它把反应头 和它分析的身体 err.details,它不知道的字段没有包含,它使一个机构不解析(一个代理的 HTML 页面) 错误消息的来由,所以一个 403 可以引用所签名的字符串 Azure , 它列出每个 x-ms- 带值的页眉, 400 InvalidHeaderValue 拒绝的值,以及请求的代理页面或网关正文。 在驱动程序抛出的错误中,证书名称下的值被替换为 [redacted] (单位:千美元)authorization, (中文(简体) ), proxy-authorization, (中文(简体) ), cookie, (中文(简体) ), set-cookie, (中文(简体) ), x-api-key, (中文(简体) ), x-ms-copy-source-authorization, (中文(简体) ), x-ms-encryption-key, (中文(简体) ), x-ms-source-encryption-key, (中文(简体) ), x-identity-header, (中文(简体) ), signature, (中文(简体) ), sig还有SDK的 encryptionKey, (中文(简体) ), accountKey 和进入标志 token在平面标题列表中或地图下的一个,以及记录中一个旁边的值: ...Value 旁边 ...Name (阿祖尔的 HeaderName 财务报告和审定财务报表 HeaderValue页:1 { name, value } 在描述错误的记录中 a value 在任何字段的证书名称之外,以及在记录中说明没有出错(没有) code, (中文(简体) ), errorCode 或者说 message),一个头表行中的另一单元格({ th, td }和同样的索引 一个平行列表, 与数字,布尔, code, (中文(简体) ), errorCode 财务报告和审定财务报表 message 留着 在其文本中,这些内容被编辑:一个证书标题行(Authorization, (中文(简体) ), Proxy-Authorization, (中文(简体) ), x-ms-copy-source-authorization一个饼干, x-api-key, (中文(简体) ), x-ms-encryption-key, (中文(简体) ), x-ms-source-encryption-key),在任何行的开头,这就是要签名的字符串如何列出它们 Authorization 值、 饼干、 客户提供的密钥、 API 密钥或连接字符串 AccountKey 在任何地方名称之后(name: value, (中文(简体) ), name=value(JSON) (韩语) SharedKey 或者说 Bearer 任何值; 单自的 JWT( 访问符而无需其计划); SAS sig= 值(%-编码、JSON-逃脱或引用); 签名 Azure 引出于一个403个机构(The MAC signature found in the HTTP request '…');和 将证书命名(a)之后的单元格文本 <th>编号 :<td> 单行, a <dt>编号 :<dd> 配对, XML <Name>编号 :<Value>在标题或标题之后)。 引用证书的密钥被编辑为文本 。 无法识别以另一种形式提交的证书( 由列、 以 HTML 实体写成的冒号、 SDK 未解析的单位中以证书命名的元素) sig %- 编码了两次, 一个用户和密码写入 URL , 而一个太大, 不适合这些模式的文本被全部替换 。 SDK错误,它载运或显示证书,以及它所达到的每一个错误(它) cause 链条, a AggregateError是因为 errors),被抛出为复制:具有相同原型的原生错误(instanceof RestError 握住,留言,堆起, code, (中文(简体) ), statusCode 财务报告和审定财务报表 details,所以分类不变,没有 request 财务报告和审定财务报表 response,任何函数或存取器属性,非错误的类实例,列表、映射或设置的已命名属性,或超过10个级别的任何事物。 活错误从未被改变,一个只持有纯数据且没有显示证书的错误被抛出.
  • 价钱 storage.requestsPerSizedRead: 2。 。 。 . 读取的指针就是到这里的指针 就像S3和GCS一样 片段的尾部读取是两个请求,它的属性再取其字节,因为Azure Blob没有后缀范围. 下载以属性的 ETag 为条件, 所以是一个 blob 二者之间替换一次,第二个替换是a TransientError。设置在您给出的定价配置中 estimateCost 或者说 groundedReport 从 @cloudbitmaps/tools,然后离开 requestsPerPointerRead 1时.

这个 生产清单 覆盖每个项目, 以及每个后端共享的项目: 客户端上的请求超时, 数据备份和注册, 以及您负载的时间表 .

文档

许可证

阿帕奇 - 2.0

版本与发布记录

@cloudbitmaps/azure-blob 共发布 25 个版本,首次发布于 2026/09/22;过去 12 个月发布了 25 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.27.0latest2026/11/037 天前
0.26.02026/11/028 天前
0.25.02026/10/3011 天前
0.24.02026/10/2417 天前
0.23.02026/10/2120 天前
0.22.02026/10/1823 天前

关于 @cloudbitmaps/azure-blob 的常见问题

@cloudbitmaps/azure-blob 是什么?

用于 CloudBitmaps 的 Azure Blob 存储器

如何安装 @cloudbitmaps/azure-blob?

在项目目录运行 npm install @cloudbitmaps/azure-blob,或使用 pnpm add / yarn add / bun add。

@cloudbitmaps/azure-blob 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cloudbitmaps/azure-blob 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cloudbitmaps/azure-blob 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.12。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cloudbitmaps/azure-blob 可以商用吗?

@cloudbitmaps/azure-blob 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@cloudbitmaps/azure-blob 的下载量有多少?

根据 npm 官方下载统计,@cloudbitmaps/azure-blob 在 2026/10/10 – 2026/11/08 这 30 天内被下载 1,742 次,日均约 58 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cloudbitmaps/azure-blob 还在维护吗?

最新版本 0.27.0 发布于 2026/11/03(7 天前);至今共发布 25 个版本,其中过去 12 个月发布了 25 个;首次发布于 2026/09/22。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。