NewsBits - Erlang, MySQL, BOLT, Pika and PouchDB


Welcome to NewsBits where you'll find the database and developer news from around the net for the week ending June 22nd:

And now, here are those bits:

Erlang - There's a new version of Erlang out, Erlang OTP 21. Why does that matter? Well, Erlang is the language at the heart of RabbitMQ and CouchDB and their great concurrency derives from being written for the Erlang OTP platform. Among the enhancements in Erlang OTP 21.0 are better I/O scalability, a 20% memory saving on 64bit code inside the 4GB boundary and safer environment handling, support for DTLS, a 10% improvement in benchmarking thanks to Elixir team contributions, new logging APIs and a uri_string module for parsing URIs according to "The standard"'. All that could translate into some fine performance and scaling enhancements when it is incorporated in RabbitMQ and CouchDB.

MySQL - Guthub pulled the covers back on how it does MySQL High Availability. It's an epic tale of moving from a VIP and DNS discovery system to find the "write masters" to extending their own failover detector, Consul and Github Load Balancer/HAProxy. It's worth looking at to see how complex failover can be. The Github solution has Github orchestrator taking on much of the management of bringing up secondaries to primary and all servers heartbeating all the time.

Facebook BOLT - Large applications can, despite the best efforts of chip designers and compiler writers, be scattered throughout memory thanks to the sheer size of their code. That costs in terms of performance, losing up to 30 percent in many cases according to Facebook. This is why they wrote BOLT - Binary Optimization and Layout Tool. It works with C compilers to layout the final application in a way that can work better with the hardware and yield from 2 to 15 percent performance improvements. It does this by profiling the application with sample data then using that profile to relink the code. Facebook have now opensourced BOLT and packaged it as an LLVM tool - it relies heavily on LLVM libraries.

Pika - RabbitMQ users, and anyone else using AMQP 0.91, will find that the Python library Pika has a new release, Pika 0.12.0. The changes are backports from the in-development Pika 1.0. Pika 1.0 is now 90% complete according to the project's milestones.

PouchDB - PouchDB, the in-browser JavaScript database which synchronizes with CouchDB has been updated. PouchDB 7.0 is now 17.5% smaller thanks to the dropping of the WebSQL support and now only using IndexedDB in the browser as the persistant data store. Other changes include no longer including a polyfill for Promises and switching to whatwg-fetch. It all means a leaner, slimmer database (now only 122K) for the browser which is always good for responsiveness.

js-couchdb - And as we're on the CouchDB, here's js-couchdb, a new Promise-based ES6 library for talking to CouchDB. Very fresh.

Redis - Well, not quite Redis, but looking at Redis compatibility, Siddontang looks at using the Redis protocol and TiKV to make a Redis-compatible cluster. There's code for a Redis protocol parser and a look at crossing the boundary between Redis and TiKV. This article is more of a starting point. Tidis exists and is a work in progress to produce a complete persistent Redis compatible database.

Atom - Github's Atom editor has had its latest refresh, Atom 1.28. The most noticable upgrade is the least visible one; Atom's been upgraded from using Electron 1.7 to Electron 2.0.3 which brings performance improvements, better stability and upgraded Node (now 8.9.3) and Chromium (now 61) under the hood. More tangible features include a better Find-in-Projects view, custom color profiles and better commit message handling in the Github package.

Rust - Rust developers can now go SIMD with Rust 1.27. This allows developers to not rely on the compiler to automatically vectorize code, but to explicitly pick the SIMD instructions that exploit parallel execution. It's low level and fiddly, but it lets package writers get maximum performance out of their library - the regex crate for Rust already uses it. Read about that and the other enhancements in the announcement.

Localhost - There's no place like home localhost and developers like to test at home. But you can't get a certificate for localhost from a certificate authority so what do you do when you want to test TLS/SSL locally? In this handy article - Certificates for localhost, Let's Encrypt look at the problem, and related issues, and talk through how to solve it. Certificates for localhost.

And finally... we always enjoy a good historical computer story. In this tale, from the B5500 Emulation Project we hear how they got hold of tapes from 1972 for the Burroughs B5500 computer system and after reading the tapes thanks to the Computer History Museum, found many forgotten programs including a 1971 version of Eliza, the "converstational" analyst, written in GTL, "Georgia Technical Language" - a mix of Algol and Lisp. You can read more about this Eliza and other Eliza's at

NewsBits. News in bits, every Friday at Compose.

Read more articles about Compose databases - use our Curated Collections Guide for articles on each database type. If you have any feedback about this or any other Compose article, drop the Compose Articles team a line at We're happy to hear from you.

Dj Walker-Morgan
Dj Walker-Morgan was Compose's resident Content Curator, and has been both a developer and writer since Apples came in II flavors and Commodores had Pets. Love this article? Head over to Dj Walker-Morgan’s author page to keep reading.

Conquer the Data Layer

Spend your time developing apps, not managing databases.