Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Store UUIDs as Binary(16) #64

Closed
sfount opened this issue Feb 2, 2016 · 3 comments
Closed

Store UUIDs as Binary(16) #64

sfount opened this issue Feb 2, 2016 · 3 comments

Comments

@sfount
Copy link
Contributor

sfount commented Feb 2, 2016

For a while we have known that storing UUIDs as a 36 character (VARCHAR(36)) string is non optimal, both for the storage space it requires and for how long it takes to read/join tables on long strings.

Proposal:

  • Generate UUID as 36 length string
8598abec-c985-11e5-975b-6c29955775b0
  • Remove dashes to bring string length to 32
8598abecc98511e5975b6c29955775b0
  • Pass this value to the UNHEX() MySQL method to store it in the database as a Binary(16)
UNHEX(8598abecc98511e5975b6c29955775b0)
  • In order to read string value from the database pass the value through the HEX() method
HEX(Table.Uuid)

There are a number of research articles that seem to show storing UUIDs in this format reduces both space required and most importantly access/ join speed.

The change would mostly affect how UUIDs are written and read from the database and should not change very much application logic.
@IMA-WorldHealth/local-contributors This can be discussed and prioritised accordingly.

@jniles
Copy link
Collaborator

jniles commented Feb 2, 2016

The one shortcoming of this method is we may not be able to do

var sql = 'INSERT INTO table SET ?;';

Is there any way to make this a trigger on UUID tables? That way none of the server side code has to change?

@jniles jniles added the design label Feb 3, 2016
@jniles
Copy link
Collaborator

jniles commented Feb 3, 2016

This proposal is crucial to having manageable database sizes. Before this can be properly considered, we will need a prototype that attempts to demonstrate INSERT syntax on a table that uses UUIDs, to understand how that will change out current API creation process.

If it is as simple as a TRIGGER, I say we go for it as soon as possible and update our APIs to use BINARY(16). If it more complex than that, we will have to have a discussion of the pros/cons in more depth.

@jniles
Copy link
Collaborator

jniles commented Mar 24, 2016

Closing this as #152 has been merged.

@jniles jniles closed this as completed Mar 24, 2016
bors bot added a commit that referenced this issue Jul 3, 2019
3780: Update del to the latest version 🚀 r=jniles a=greenkeeper[bot]


## The devDependency [del](https://github.com/sindresorhus/del) was updated from `4.1.1` to `5.0.0`.
This version is **not covered** by your **current version range**.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

---

<details>
<summary>Release Notes for v5.0.0</summary>

<p>This release changes the underlying globbing engine, so you are strongly recommended to use the <code>dryRun</code> option to ensure <code>del</code> still does what you expect before you run it on the real files.</p>
<p>Breaking:</p>
<ul>
<li>Require Node.js 8  <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/sindresorhus/del/commit/42e67a89f8ba5a25fc73cab0075e8181ee7fc069/hovercard" href="https://urls.greenkeeper.io/sindresorhus/del/commit/42e67a89f8ba5a25fc73cab0075e8181ee7fc069"><tt>42e67a8</tt></a></li>
<li>Update globby from version 6 to version 10 (<a class="issue-link js-issue-link" data-error-text="Failed to load issue title" data-id="278835457" data-permission-text="Issue title is private" data-url="sindresorhus/del#64" data-hovercard-type="pull_request" data-hovercard-url="/sindresorhus/del/pull/64/hovercard" href="https://urls.greenkeeper.io/sindresorhus/del/pull/64">#64</a>)  <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/sindresorhus/del/commit/6f96d2d4d311a30c5bcc94485f340695e6d24023/hovercard" href="https://urls.greenkeeper.io/sindresorhus/del/commit/6f96d2d4d311a30c5bcc94485f340695e6d24023"><tt>6f96d2d</tt></a><br>
<strong>Important:</strong> If you used any of the <code>globby</code> options, please note that <code>globby</code> switched from using the <code>glob</code> package to <code>fast-glob</code>, so almost all the option names changed. <a href="https://urls.greenkeeper.io/mrmlnc/fast-glob#compatible-with-node-glob">Here's how to migrate the options.</a></li>
</ul>
<p><a class="commit-link" href="https://urls.greenkeeper.io/sindresorhus/del/compare/v4.1.1...v5.0.0"><tt>v4.1.1...v5.0.0</tt></a></p>
</details>

<details>
<summary>Commits</summary>
<p>The new version differs by 6 commits.</p>
<ul>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/c07118089d4e6a4f7df689be888b90b989183d0c"><code>c071180</code></a> <code>5.0.0</code></li>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/a73462cb190415e0cda226df1d68c8c73325da05"><code>a73462c</code></a> <code>Meta tweaks</code></li>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/6f96d2d4d311a30c5bcc94485f340695e6d24023"><code>6f96d2d</code></a> <code>Update globby to version 10 (#64)</code></li>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/6e23f6ade68dcf5d9fc6be704fdc1deb8f95bf33"><code>6e23f6a</code></a> <code>Tidelift tasks</code></li>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/42e67a89f8ba5a25fc73cab0075e8181ee7fc069"><code>42e67a8</code></a> <code>Require Node.js 8</code></li>
<li><a href="https://urls.greenkeeper.io/sindresorhus/del/commit/535d7755466694c97899b6e5334f60ae1816a4eb"><code>535d775</code></a> <code>Enable the repo sponsor button</code></li>
</ul>
<p>See the <a href="https://urls.greenkeeper.io/sindresorhus/del/compare/31be0e74e352ac7aae71b330a704756851736880...c07118089d4e6a4f7df689be888b90b989183d0c">full diff</a></p>
</details>

<details>
  <summary>FAQ and help</summary>

  There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).
</details>

---


Your [Greenkeeper](https://greenkeeper.io) bot 🌴



Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
bors bot added a commit that referenced this issue Jul 22, 2019
3813: Update cz-conventional-changelog to the latest version 🚀 r=jniles a=greenkeeper[bot]


## The devDependency [cz-conventional-changelog](https://github.com/commitizen/cz-conventional-changelog) was updated from `2.1.0` to `3.0.0`.
This version is **not covered** by your **current version range**.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

---

**Publisher:** [commitizen-bot](https://www.npmjs.com/~commitizen-bot)
**License:** MIT

<details>
<summary>Release Notes for v3.0.0</summary>

<h1><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/compare/v2.1.0...v3.0.0">3.0.0</a> (2019-07-19)</h1>
<h3>Bug Fixes</h3>
<ul>
<li>remove pre-node 10 support (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/86" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/86/hovercard">#86</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/76588ad">76588ad</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>add default values to options (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/69" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/69/hovercard">#69</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/65d6a9f">65d6a9f</a>)</li>
<li>implement configuration through package.json (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/75" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/75/hovercard">#75</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/3398c02">3398c02</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Node 10 is LTS so please upgrade to it.</li>
</ul>
</details>

<details>
<summary>Commits</summary>
<p>The new version differs by 7 commits.</p>
<ul>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/76588adc6eb0c09f684dd9f7359c12492ee69d81"><code>76588ad</code></a> <code>fix: remove pre-node 10 support (#86)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/6ed57bdd7c7220c947ddbafff4f74fa6e5597a80"><code>6ed57bd</code></a> <code>ci(publish): fixed the npm command to run semantic-release (#81)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/3398c02207b42133691dac8be21257ee28a0ac4c"><code>3398c02</code></a> <code>feat: implement configuration through package.json (#75)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/65d6a9f935318398ea120da406d76b78498ca632"><code>65d6a9f</code></a> <code>feat: add default values to options (#69)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/f2ca75525f5788342ccdf6efd9391f742f0509b7"><code>f2ca755</code></a> <code>chore(license): adds missing MIT license file (#67)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/d4bf98e59b0d24e18876945546181ada5e2f7448"><code>d4bf98e</code></a> <code>Merge pull request #64 from jacobq/patch-1</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/ff370a323c571a7080d2f9073c0fae2111a1760e"><code>ff370a3</code></a> <code>doc(README): Update link (again)</code></li>
</ul>
<p>See the <a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/compare/d40ac2c5a0021a2c6faa7b8471a3003213a2c7ef...76588adc6eb0c09f684dd9f7359c12492ee69d81">full diff</a></p>
</details>

---

<details>
  <summary>FAQ and help</summary>

  There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).
</details>

---


Your [Greenkeeper](https://greenkeeper.io) bot 🌴



Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
bors bot added a commit that referenced this issue Jul 23, 2019
3813: Update cz-conventional-changelog to the latest version 🚀 r=jniles a=greenkeeper[bot]


## The devDependency [cz-conventional-changelog](https://github.com/commitizen/cz-conventional-changelog) was updated from `2.1.0` to `3.0.0`.
This version is **not covered** by your **current version range**.

If you don’t accept this pull request, your project will work just like it did before. However, you might be missing out on a bunch of new features, fixes and/or performance improvements from the dependency update.

---

**Publisher:** [commitizen-bot](https://www.npmjs.com/~commitizen-bot)
**License:** MIT

<details>
<summary>Release Notes for v3.0.0</summary>

<h1><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/compare/v2.1.0...v3.0.0">3.0.0</a> (2019-07-19)</h1>
<h3>Bug Fixes</h3>
<ul>
<li>remove pre-node 10 support (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/86" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/86/hovercard">#86</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/76588ad">76588ad</a>)</li>
</ul>
<h3>Features</h3>
<ul>
<li>add default values to options (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/69" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/69/hovercard">#69</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/65d6a9f">65d6a9f</a>)</li>
<li>implement configuration through package.json (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/issues/75" data-hovercard-type="pull_request" data-hovercard-url="/commitizen/cz-conventional-changelog/pull/75/hovercard">#75</a>) (<a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/3398c02">3398c02</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Node 10 is LTS so please upgrade to it.</li>
</ul>
</details>

<details>
<summary>Commits</summary>
<p>The new version differs by 7 commits.</p>
<ul>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/76588adc6eb0c09f684dd9f7359c12492ee69d81"><code>76588ad</code></a> <code>fix: remove pre-node 10 support (#86)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/6ed57bdd7c7220c947ddbafff4f74fa6e5597a80"><code>6ed57bd</code></a> <code>ci(publish): fixed the npm command to run semantic-release (#81)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/3398c02207b42133691dac8be21257ee28a0ac4c"><code>3398c02</code></a> <code>feat: implement configuration through package.json (#75)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/65d6a9f935318398ea120da406d76b78498ca632"><code>65d6a9f</code></a> <code>feat: add default values to options (#69)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/f2ca75525f5788342ccdf6efd9391f742f0509b7"><code>f2ca755</code></a> <code>chore(license): adds missing MIT license file (#67)</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/d4bf98e59b0d24e18876945546181ada5e2f7448"><code>d4bf98e</code></a> <code>Merge pull request #64 from jacobq/patch-1</code></li>
<li><a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/commit/ff370a323c571a7080d2f9073c0fae2111a1760e"><code>ff370a3</code></a> <code>doc(README): Update link (again)</code></li>
</ul>
<p>See the <a href="https://urls.greenkeeper.io/commitizen/cz-conventional-changelog/compare/d40ac2c5a0021a2c6faa7b8471a3003213a2c7ef...76588adc6eb0c09f684dd9f7359c12492ee69d81">full diff</a></p>
</details>

---

<details>
  <summary>FAQ and help</summary>

  There is a collection of [frequently asked questions](https://greenkeeper.io/faq.html). If those don’t help, you can always [ask the humans behind Greenkeeper](https://github.com/greenkeeperio/greenkeeper/issues/new).
</details>

---


Your [Greenkeeper](https://greenkeeper.io) bot 🌴



Co-authored-by: greenkeeper[bot] <23040076+greenkeeper[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants