cockroachdb / sequelize-cockroachdb

Use Sequelize and CockroachDB together
Apache License 2.0
53 stars 16 forks source link

sequelize-cockroachdb

This NPM package makes Sequelize compatible with CockroachDB.

Learn how to build a Node.js app with CockroachDB.

Please file bugs against the sequelize-cockroachdb project

Requirements

This package needs Node.js v12 or later

Setup and run tests

First make sure you have CockroachDB installed. You can run cockroach version to see if is installed or you can download here

Run cockroach start-single-node --insecure --logtostderr to start the database. If this returns ERROR: cockroach server exited with error: unable to lookup hostname run with --host localhost flag.

Run cockroach sql --insecure to enter in SQL mode and type CREATE DATABASE sequelize_test;

Then install the depedencies with npm i and npm test to run all tests

Limitations

Dealing with transactions

From the docs

CockroachDB guarantees that while a transaction is pending, it is isolated from other concurrent transactions with serializable isolation.

Which means that any other query made in another connection to the same node will hang.

For example:

const t = await this.sequelize.transaction();
await this.User.create({ name: "bob" }, { transaction: t });
await this.User.findAll({ transaction: null }); // Query will hang!

CockroachDB does not support yet:

See tests/model_create_test.js to browse those implementations.