Distributed Algorithms in NoSQL Databases

Highly Scalable Blog

Scalability is one of the main drivers of the NoSQL movement. As such, it encompasses distributed system coordination, failover, resource management and many other capabilities. It sounds like a big umbrella, and it is. Although it can hardly be said that NoSQL movement brought fundamentally new techniques into distributed data processing, it triggered an avalanche of practical studies and real-life trials of different combinations of protocols and algorithms. These developments gradually highlight a system of relevant database building blocks with proven practical efficiency. In this article I’m trying to provide more or less systematic description of techniques related to distributed operations in NoSQL databases.

In the rest of this article we study a number of distributed activities like replication of failure detection that could happen in a database. These activities, highlighted in bold below, are grouped into three major sections:

  • Data Consistency. Historically, NoSQL paid a lot of attention to…

View original post 5,911 more words

Bringing the web up to speed with WebAssembly

the morning paper

Bringing the web up to speed with WebAssembly Haas et al., PLDI 2017

This is a joint paper from authors at Google, Mozilla, Microsoft and Apple describing the motivations for WebAssembly together with a very concise exposition of its core semantics. If you’re following along with the paper, I found it helpful to dip into the full WebAssembly Specification at points for extra clarification. I’m going to spend most of my time in this write-up covering the parts of the paper focusing on the design rationale, properties, and implementation experiences since diving into the detailed semantics is really better left to the full spec.

Why do we need WebAssembly?

There’s a great observation in the introduction section: the Web has become the most ubiquitous application platform ever, and yet by historical accident the only natively supported programming language for that platform is JavaScript! That’s made for a number of…

View original post 1,850 more words

An overview of data serialization techniques in C++

Rubén Torres Bonet

You’ve spent days designing your perfect data structures and they work just like in dreams. Now you have to save them permanently. What do you do apart from googling? The obvious answer is: reading this blog!

My goal here is to give you an overview of some techniques I’ve successfully used in the past. Along this blog entry I will be covering a few alternatives: memcpy, manual serialization, boost::serialization, Protocol Buffers (protobuf) and cereal.

Only keep reading if you are really interested in learning! (hopefully something new)

View original post 1,216 more words