clickhouse-ts
TypeScript icon, indicating that this package has built-in type declarations

2.0.4 • Public • Published

ClickHouse TypeScript client by @bytadaniel


Travis (.org) Libraries.io dependency status for GitHub repo npms.io (final) GitHub issues Join the chat at https://gitter.im/bytadaniel/clickhouse-ts GitHub followers

Introduction

💙 Typescript

This package is written in TypeScript because Node.js typing development is already an industry standard.

🖐 Batch insert*

It has been empirically verified that in-memory collecting rows is the most efficient and consistent way to insert into Clickhouse. To work with built-in caching, you just need to call the useCaching() method

💪 Transparent and Stability

clickhouse-ts doesn't use a lot of abstractions and dependencies, so it's fast and stable.

🏗 Ready for production

The Lookforsale team has been using clickhouse-ts effectively for over a year under extreme loads!

👍 Batch validation

Double checking data for anomalies during in-memory caching and when inserting a finished batch.

Flexibility

Flexible configuration of the Clickhouse client instance and support for all features provided by Clickhouse developers.

🔐 Security

SQL Injection Protection with sqlstring

🌈 Free for use

The package has a public license and is available for download to any developer!## Installation

Installation

npm i clickhouse-ts
npm i clickcache

*How can I insert in-memory batches?

Starting from version 2.0.0 the caching module should be imported separately. This is because clickcache package, like clickhouse-ts, is going to be part of my Clickhouse Node.js ecosystem. In addition, it planned to introduce data validation, as in Joi and model generation, as in mongodb/mongoose.

Connection

Only HTTP(s) protocol is supported.

const client = new Clickhouse(
  {
    url: 'url',
    port: 8443,
    user: 'user',
    password: 'password',
    database: 'database',
    ca: fs.readFileSync('cert.crt')
  },
  {
	/* https://clickhouse.com/docs/en/interfaces/formats */  
    defaultResponseFormat: 'JSON',
    clickhouseOptions: {
      /* https://clickhouse.tech/docs/en/operations/settings/settings/ */
      send_progress_in_http_headers: '1'
    }
  }
)

Usage examples

Basically, this client supports data insertion, but you should consider collecting your data before passing it as an argument here. Use clickcache to prepare batches!

Insert

const response = await client.insert('table_strings', rows, {
  format: 'CSVWithNames'
})

Select

await clickhouseInstance.query<{ t: string }>('WITH now() as t SELECT t', {
  format: 'TSV',
  send_progress_in_http_headers: '1'
})

DDL queries

await clickhouseInstance.query(`
  CREATE TABLE strings (
    date DateTime('UTC'),
    string String
  ) Engine = ReplacingMergeTree()
  PARTITION BY toMonday(date)
  ORDER BY (date, string)
`, { noFormat: true })

Package Sidebar

Install

npm i clickhouse-ts

Weekly Downloads

85

Version

2.0.4

License

MIT

Unpacked Size

214 kB

Total Files

44

Last publish

Collaborators

  • bytdnel