简介
现代数据驱动型应用程序需要一种与持久性数据存储进行通信的方式。在网络层实现这种通信非常耗时,并且需要理解连接管理、数据格式化和数据编组等底层概念。语言客户端是一种标准模式,它提供特定于语言的抽象,隐藏了连接到数据存储的复杂技术细节。
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 版本 进行广泛的持续测试
最常见用例的代码示例可在 我们的存储库示例文件夹中找到。此外,我们建议查看 集成测试文件夹 以获取更多示例。
我们为什么决定编写自己的客户端
开源爱好者是创建繁荣生态系统的关键。我们认为我们的首要目标是帮助社区培养围绕 ClickHouse 的开放生态系统。由于语言客户端是 ClickHouse 生态系统不可或缺的一部分,我们决定为语言客户端架构和功能制定一个通用规范。这为任何在其喜欢的编程语言中创建客户端的人员提供了建议,并捕获了预期功能以及有关解决常见问题的指导。我们的目标是通过所有客户端都可以遵循的标准规范来降低维护和开发人员入门成本,从而带来更好的开发人员体验。
几个月前,我们创建了语言客户端规范的第一版草案,并将 Node.js 客户端视为一个很好的候选者来尝试和验证文档中描述的想法。您可以在此实时 文档中找到规范草案。 随时分享您的想法。我们计划通过收集社区的反馈,迭代地使规范适应客户的需求。我们欢迎任何关于标准语言客户端应提供哪些功能、API 应该是什么样子、需要哪些工具来简化长期维护等的建议。最终所有客户端都将旨在符合此规范。
结语和贡献号召
我们刚刚发布了 客户端的第一个版本。 我们迫不及待地想听听您如何在应用程序中使用该客户端,并获得有关其提供的功能、API 人体工程学、性能以及可能的改进方面的反馈。
尽情尝试,并在我们的 存储库中与我们见面。
链接
- GitHub 存储库:https://github.com/ClickHouse/clickhouse-js
- NPM 注册表:https://npmjs.net.cn/package/@clickhouse/client
如果您对最新技术充满热情并热爱开源,我们目前正在为我们的 集成团队招聘,期待您的加入。