Skip to content

fisdap/innodb-optimized-uuid

Repository files navigation

Generate non-standard InnoDB-optimized UUIDs in JavaScript

About

If you are using MySQL, uuids can add overhead. We can create more performant, but non-standard UUIDs that help speed up insets and is sized to fit inside a binary(16) column.

Build Status Dependency Status Code Climate Test Coverage

Here are the steps involved in this process:

  1. 13341cb5-c1f8-11e4-91e7-080027880ca6 (Standard UUID v1)
  2. 11e4-c1f8-13341cb5-91e7-080027880ca6 (Transposed, non-standard UUID)
  3. 11E4C1F813341CB591E7080027880CA6 (Resized, transposed, non-standard UUID)

Usage Instructions

Install (in Node.js and/or Webpack)

  npm install innodb-optimized-uuid --save-exact

If using Node or Webpack w/CommonJS, import using:

  var iouuid = require('innodb-optimized-uuid');

Or if using Webpack w/ES6 or SystemJS module syntax, import using:

  import {iouuid} from 'innodb-optimized-uuid';

For more information on how to use this package in Webpack, see the full example showing both CommonJS and ES6 usage.

Install and Include (using bower)

  bower install innodb-optimized-uuid
  <script src="bower_components/innodb-optimized-uuid/dist/innodb-optimized-uuid.js"></script>
  var iouuid = window.innodbOptimizedUuid;

Generate a non-standard InnoDB-optimized UUID

  var uuid = iouuid.generate();
  // uuid's value is now a non-standard innodb-optimized uuid in the format:
  //   11E4C1F813341CB591E7080027880CA6

A common mistake: When generating multiple UUIDs in this format, uuids may incorrectly appear equal to the human eye. This because the start and end characters are often the same. In this format the values in the middle of the uuid changes most often when called repeatedly.

Development

Tests

Clone this repo. Run npm install && npm test

Browser example

  1. Clone the repo
  2. npm install -g liveserver
  3. run live-server in the project root

Building

To build, simply execute: gulp build

Increasing (bumping) the current version

Commit all of your changes locally.

  • For a patch version bump: gulp patch
  • For a minor version bump: gulp feature
  • For a major version bump: gulp release

Then, finally publish to github/bower and npm using: gulp publish

About

Generates non-standard innodb optimized uuids that are more performant for MySql writes.

Resources

Stars

Watchers

Forks

Packages

No packages published