@datadog/sketches-js

中文文档
2.1.1发布于 2024/04/23Apache-2.0TypeScriptCommonJS零依赖近 30 天下载 594万

TypeScript 执行 DDSketch, 分布式四分法草图算法

中文使用文档
文档目录7 节
  1. 安装
  2. 使用量
  3. 初始化草图
  4. 将数值添加到草图中
  5. 从草图中获取测量数据
  6. 合并多幅草图
  7. 参考资料

草图 -js

Continuous Integration License

此回波包含分布式四分法草图算法的 TypeScript 执行 DDSketch 软件. DDSketch是可合并的,指分布式系统的多幅草图可以在一个中心节点进行组合.

安装

包裹在下面 @ datadog/ skets-js (英语) 并且可以通过国家防范机制或Yarn安装:

# NPM
npm install @datadog/sketches-js

# Yarn
yarn add @datadog/sketches-js

当使用Protobuf序列化时 原生生物库 模块也必须手动安装:

# NPM
npm install protobufjs

# Yarn
yarn add protobufjs

使用量

初始化草图

要初始化带有默认参数的草图 :

import { DDSketch } from '@datadog/sketches-js'; // or const { DDSketch } = require('@datadog/sketches-js');
const sketch = new DDSketch();

修改 relativeAccuracy

如果你想对草图结果的精确度 进行更多的颗粒控制 relativeAccuracy 参数初始化草图时.

其他直方图使用 等级错误 保证(即收回直方图中的p99, 将给予您p98.9和p99.1), DDSketch 使用 a 相对错误 保证(如果p99的实际值为100,则a/ relativeAccuracy (单位:千美元).

这种属性使得DDSketch对于数据的长尾分布特别有用,比如测量延迟.

import { DDSketch } from '@datadog/sketches-js';

const sketch = new DDSketch({
  relativeAccuracy: 0.01, // `relativeAccuracy` must be between 0 and 1
});

将数值添加到草图中

要在草图上添加一个数字,请拨 sketch.accept(value)支持正负数字.

const measurementOne = 1607374726;
const measurementTwo = 0;
const measurementThree = -3.1415;

sketch.accept(measurementOne);
sketch.accept(measurementTwo);
sketch.accept(measurementThree);

从草图中获取测量数据

要从草图中获取测量数据,请使用 sketch.getValueAtQuantile(quantile)。任何在0至1 (包括) 之间的数字都可以作为定量.

此外,还有共同的汇总统计数据,例如: sketch.min, (中文(简体) ), sketch.max, (中文(简体) ), sketch.sum,以及 sketch.count数字 :

const measurementOne = 1607374726;
const measurementTwo = 0;
const measurementThree = -3.1415;

sketch.accept(measurementOne);
sketch.accept(measurementTwo);
sketch.accept(measurementThree);

sketch.getValueAtQuantile(0)     // -3.1415
sketch.getValueAtQuantile(0.5)   // 0
sketch.getValueAtQuantile(0.99)  // 1607374726
sketch.getValueAtQuantile(1)     // 1607374726

sketch.min                       // -3.1415
sketch.max                       // 1607374726
sketch.count                     // 3
sketch.sum                       // 1607374722.86

合并多幅草图

独立草图可以合并,但必须采用相同的草图 relativeAccuracy,从而能够以分布式方式收集和传递测量结果,并合并其结果,同时保留 relativeAccuracy 保证.

import { DDSketch } from '@datadog/sketches-js';

const sketch1 = new DDSketch();
const sketch2 = new DDSketch();

[1,2,3,4,5].forEach(value => sketch1.accept(value));
[6,7,8,9,10].forEach(value => sketch2.accept(value));

// `sketch2` is merged into `sketch1`, without modifying `sketch2`
sketch1.merge(sketch2);

sketch1.getValueAtQuantile(1) // 10

参考资料

版本与发布记录

@datadog/sketches-js 共发布 10 个版本,首次发布于 2020/12/08;过去 12 个月发布了 0 个版本。

版本发布日期距今
2.1.1latest2024/04/232 年前
2.1.02022/08/244 年前
2.0.02022/08/094 年前
1.0.52022/06/234 年前
1.0.42021/08/055 年前
1.0.32021/08/055 年前

关于 @datadog/sketches-js 的常见问题

@datadog/sketches-js 是什么?

TypeScript 执行 DDSketch, 分布式四分法草图算法

如何安装 @datadog/sketches-js?

在项目目录运行 npm install @datadog/sketches-js,或使用 pnpm add / yarn add / bun add。

@datadog/sketches-js 支持 TypeScript 吗?

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

@datadog/sketches-js 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@datadog/sketches-js 可以商用吗?

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

@datadog/sketches-js 的下载量有多少?

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

@datadog/sketches-js 还在维护吗?

最新版本 2.1.1 发布于 2024/04/23(2 年前);至今共发布 10 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/12/08。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。