简介
现代的、数据驱动的应用程序需要一种与持久数据存储进行通信的方式。在网络层实现这种通信非常耗时,并且需要理解底层概念,例如连接管理、数据格式化和数据编组。语言客户端是一种标准模式,用于提供特定于语言的抽象,从而隐藏连接到数据存储的技术复杂性。
ClickHouse 已经提供了官方语言客户端,包括 Java、Python 和 Go。今天,我们很高兴推出官方的、功能齐全的开源 Node.js 客户端 加入这个大家庭。创建此客户端是为了在 Node.js 生态系统中提供 ClickHouse 闪电般的速度和易用性。此语言客户端加入了我们不断增长的 ClickHouse 核心集成列表(由 ClickHouse 维护和支持)。
客户端功能
- 完全使用 TypeScript 编写,具有强大的类型支持(包括所有 ClickHouse 服务器设置)
- Node.JS 14.x、16.x、18.x 运行时
- 具有持久连接的 HTTP(s) 协议
- HTTP 请求和响应压缩
- 用于数据插入和选择的 Node.js 流式 API
- 支持各种数据输入和输出格式 - JSON、CSV、TabSeparated 和 CustomSeparated 格式系列
- 支持大多数 ClickHouse 数据类型
- 参数化查询
- 请求取消
- 自定义日志记录器支持
- 使用 ClickHouse Cloud 和最新的实际 ClickHouse 版本进行广泛的持续测试
我们存储库示例文件夹中提供了最常见用例的代码示例。此外,我们建议查看集成测试文件夹以获取更多示例。
我们为什么决定编写自己的客户端
OSS 爱好者是创建蓬勃发展的生态系统的关键。我们认为我们的首要目标是协助社区围绕 ClickHouse 培育开放生态系统。由于语言客户端是 ClickHouse 生态系统不可或缺的一部分,因此我们决定正式制定语言客户端架构和功能的通用规范。这为任何使用他们喜欢的编程语言创建客户端的人提供了建议,并捕获了预期的功能,并提供了解决常见问题的指导。我们的目标是通过所有客户端都可以遵循的标准规范来降低维护和开发人员入职成本,从而为开发人员带来更好的体验。
几个月前,我们创建了语言客户端规范的初稿,并将 Node.js 客户端视为尝试和验证文档中描述的想法的良好候选者。您可以在此 live文档中找到规范草案。请随时在此处分享您的想法。我们计划通过从社区获得反馈来迭代地调整规范以满足客户的需求。我们欢迎关于标准语言客户端应提供哪些功能、API 应是什么样子、需要哪些工具来简化长期维护等的任何想法。所有客户端都将逐步旨在符合此规范。
结束语和贡献号召
我们刚刚发布了客户端的最初版本。我们迫不及待想听听您如何在应用程序中使用该客户端,并获得有关其提供的功能、API 人体工程学、性能和可能的改进的反馈。
尽情享受实验的乐趣,并在我们的存储库中与您相见。
链接
- GitHub 存储库: https://github.com/ClickHouse/clickhouse-js
- NPM 注册表: https://npmjs.net.cn/package/@clickhouse/client
如果您对最新技术充满热情,并且对开源充满热情,我们目前正在为我们的集成团队招聘,并期待收到您的来信。