# Blog

This post is part of a series about the challenges behind database performance and how to accurately assess it.

## Why compression matters so much for timeseries data

Whatever database engine you are using, efficient disk storage is always welcomed. When your 10 GiB become 100 GiB once in the database, that’s never a nice thing!

This post is part of a series about the challenges behind database performance and how to accurately assess it.

## You don’t care about performance

When we started selling QuasarDB, we focused on its performance advantages and touted how great they were. The logic behind that was obvious: we were very strong in this area; thus we should bring the battle to where we are strong!

This post is part of a series about the challenges behind database performance and how to accurately assess it.

## Purpose of an ingress benchmark

When evaluating a timeseries database management system (later referred as TSDBMS or TSDB), one important dimension is the ingress speed (a.k.a. insertion or ingestion), that is, how fast the database can store new data points.

This port is the first in a series about the challenges behind database performance and how to accurately assess it. In future posts, we will dig more into the specifics of benchmarks and design choices.

## The Penrose stairs of performance

If you are following database innovation you can see that nearly every database vendor out there has at least one benchmark putting them in the first place. With every vendor selling the fastest database there is, you end up in a Penrose stairs situation where everyone is faster than everyone.

The security debacle. As a database user or administrator, you may have learnt that MongoDB recently took a very serious hit. A hit of over 28,000 hacked installs.

At first an interrogation - At the beginning, there was a question. Why are we waiting for machines to give us an answer? Why aren't we able to analyze everything in real time?

Since C++ 11 it's possible to use braces for construction and initialization. Although this is something you could ignore for the code you write, it's obviously important to know for the code you may read.

In a previous post, we had a look at the new constexpr keyword that has been introduced in C++ 11. Today we'll study another new fancy specifier: noexcept.

Tags: cpp, noexcept, Uncategorized

C++ 11 and C++ 14 came with a lot of new features. People tend to focus on lambdas and rvalue references, but today I’d like to talk about constexpr.

Tags: c++, constexpr, Uncategorized

The topic of commenting source code has been discussed over and over.

Tags: cpp, c++, commenting, Uncategorized

I think the number one request from all our existing customers is to have as much as backward compatibility as possible with quasardb.

Computers have been invented to compute large amounts of data at very high speed, relative to the human brain speed. In a sense, computers have always been about "big data". Although "big data" is probably more a marketing term than a technical one, we must acknowledge that we are at a threshold where data mining can be done on such amounts that new approaches are emerging.

One of the constant reproaches we can hear about C++ is that it is too complex, too hard, too unsafe and has too many features, really these r-value references are useless and dangerous and why would you need variadic templates anyway, and "lol" you are still managing memory manually in 2016.

Tags: cpp, programming, rant, Uncategorized

I wanted to share some tips and tricks for those of you who use a recently released Visual Studio GDB Debugger extension. You may want to read the announcing blog post as well.

Weird error - Recently, I have encountered a really strange linker error after a ridiculously small change in the code. Look at the error message and find the reason in 5 seconds without looking further in the text and I owe you a beer ;).

nodejs is a great platform reaching a certain degree of maturity. We generally have a lazy approach toward API support with quasardb: if no one is asking for it, don't implement it.

Tags: cpp, addon, nodejs, quasardb, Uncategorized

It is with great pleasure and pride we announce the fifth beta of our quasardb 2.0 release. Things are getting exciting as we are approaching the final release!

On Amazon's EC2, using EBS as the backend storage for your application has been the de-facto standard. Using the local storage of an EC2 container is risky: data loss occurs when a container is stopped and it is not replicated by default. As such, people should default to using EBS, which is Amazon's version of a SAN.

This is an opinionated post about five libraries we use in the production code of quasardb.

Tags: Uncategorized

One of the cool thing about C++ is all these checks you can do at compile time. With compile time checks you can not only write safer code, but also faster code for the simple reason that alls the checks you do at compile time will not have to be done at runtime.

Tags: Uncategorized

The stabilization algorithm - quasardb is a distributed, peer-to-peer database based on the Chord Algorithm. It is actually much more than that, but for the purpose of this post we will focus on the Chord algorithm and one fundamental process: stabilization.

Tags: quasardb, testing, Uncategorized

Getting your hands on quasardb has never been that easy. With just a few mouse clicks you can deploy your own quasardb server in Microsoft Azure.

Tags: azure, quasardb, Uncategorized

Many Boost.Filesystem functions and methods (and the pattern also exists in Boost.Asio) will throw a boost::system::error_code in case of error, and sometimes it is not as obvious as you might expect, case in point:

Tags: boost, c++, error, exceptions, tie, Uncategorized

Precision is costly - As you saw in our previous post getting a timestamp as precise as possible is expensive in precious cycles. We do it only when we really need it because we really care about writing the world fastest database.

This is the last year for Bureau 14 as we unanimously decided to rename the company to quasardb.

Tags: Uncategorized

Tags: aspen, boost, c++, system, Uncategorized

Oh what a tangled web we weave when we first try to optimize files inclusion in C++. I can hear your sarcasm other-language programmer developer, feel free to flood the comments sections with something along the lines of “We don’t have this problem in fancy-new-language, you paleo-programmer!”.

Tags: cpp, boost, clang, Uncategorized

I wish you all a great holiday season, see you next year!

Tags: holiday, Uncategorized

The best way to have a value as accurate as possible is to complete the software project.

Tags: Uncategorized

I'm used to read technical inaccuracies when it comes to system programming, and writings about the Nagle algorithm are very high in the list.

Tags: asio, c++, nagle, networking, Uncategorized

A couple of years ago, Antirez wrote a note on his blog about "The Toilet test". He made a couple of great points, criticizing the test and the method.

Tags: Uncategorized

> The issue described in this post has been fixed in quasardb 1.0.1 released today. We strongly encourage our customers to upgrade their clusters. This issue can cause a denial of service if an attacker has access to the network where your quasardb cluster is installed.

My "Scaling with C++ 11" talk is online.

It's really great to see yourself in video because everything bad about your presentation becomes obvious. I already have a lot of ideas to improve this one and I hope I can deliver something much better at Meeting C++. I hope to see you there!

Tags: boost, c++, conference, Uncategorized

In my C++ Now 2013 presentation, I talked about the Lockheed SR-71 Blackbird as an example of how you sometimes go around problems by "leaking":

Tags: blackbird, c++, sr-71, Uncategorized

As I flew back to France, I was reading Lie Yukou:

Tags: liezi, tao, Uncategorized

> Hope you guys are enjoying C++ Now!

We use Boost.Spirit for all our parsing and generation. What I mean by that is that when you have to parse input or generate output, we don’t use std::stringstream, we don’t use the C libraries and we definitely don’t write custom parsers or generators.

We don't actually have "coding rules" at Bureau 14, at least, not in the sense you would expect them.

One one hand, we think it's best to give as much freedom as possible to the developers and prevent rules to get in the way of evolution.

Tags: bureau 14, c++, coding, rules, Uncategorized

"Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it."
--Confucius

We wish you all happy hollidays!

Tags: Uncategorized

There is a lot of code in this post, it will probably not compile "as is" because of missing headers or compiler's incompatibilities. Nevertheless, we made available through our open source initiative the full working library on github. It has been tested on Clang 3.1, gcc 4.6.1 and MSVC 11 on FreeBSD, Linux and Windows.

At Bureau 14 we highly value code quality: it's the corner stone of our software development strategy and certainly one of our core values as a company. We believe that investing in code quality pays off in the long term, especially when our software is entrusted by our customer with mission-critical data.

By judging the endless stream of blog entries, books, conferences, tweets, status updates, advices, statements and aphorism on the topic, you can certainly figure out that productivity is the hottest topic behind celebrities naked pictures, cats in embarrassing situations and tomorrow’s weather.

Although we edit NoSQL software, I always disliked calling our product a NoSQL database. I know we say in the third paragraph of our web page that wrpme is a NoSQL database, but see, right after it says that we prefer to call it a postmodern database as proposed by Dr. Richard Hipp.

Parrots are wonderful creatures of Earth. How many animals can you actually talk to?

Tags: parrot, pet, pirate, Uncategorized

I recently came across a great blog post asserting - based on numerous studies - that size is the best predictor of code quality.

Our website isn't critical, in the sense that, if the website goes down, our operations remain unaffected. However, lately, the website was becoming extremely slow and it was turning into bad publicity.

The BoostCon is a Boost centric conference, but it's actually much more than that. It's probably the best C++ conference in the world.

Tags: boost, boostcon, c++, Uncategorized

In battle, use direct forces to match the enemy and use indirect forces to win the enemy.-Sun Tzu

Why increase quality? One good reason: costs reduction. There are many others, but this one is important enough.

Following up on the discussion about programming languages, I wanted to share with you a demo made in Haskell (demos are generally written in C, C++ or even assembly language).

Smart pointers have become the premium choice for memory management in C++. This is everything but odd, when you come to think of it.

A while ago I technically screened a developer for one of our biggest client. This developer was a huge fan of unit testing. Whatever software puzzle I submitted could be solved with an unit test.

I'm obsessed with theorizing everything in life. That can be a good thing, and that can be a bad thing. When you know how to stop, I found it can be quite a strength.

Let me tell you why you're here. You're here because you know something. What you know you can't explain, but you feel it. You've felt it your entire life, that there's something wrong with the world. You don't know what it is, but it's there, like a splinter in your mind, driving you mad. It is this feeling that has brought you to me. You want to know what is heap fragmentation.

C++ is the world of do-it-yourself memory management. When discussing programming with someone, as I reach the point where I tell that I mainly work with C++ the first thing I hear is "Oh... But you have to deallocate memory yourself... That's so cumbersome and obsolete!"

Tags: boost, c++, heap, pool, Uncategorized

I was working on a typical "airport-security-I-know-better-post", then I realized that Bruce Schneier already said all of these things better than me.

While still a bit jetlagged, I managed to find the time to setup my new box, a Core i7 running Windows 7 64-bit. A 7/7 box, which in itself is pretty neat.

Tags: Core i7, SSD, Uncategorized, Windows 7

I just returned from the BoostCon 2009, expect some new content very soon!

Tags: aspen, psychic, Uncategorized

MAnd Unicode came to this world - Most of us don't work in ANSI or ASCII anymore. Most of the projects I work on are either UTF-8 or UTF-16.

You probably heard at least once the hardware is free aphorism. Perhaps you even said it! The underlying notion is that optimizing code is generally more expensive than upgrading the machine or even buying a new one.