The LZMA algorithm implemented by the xz compression software package is one of the compression algorithms used by TokuDB for MySQL and TokuMX for MongoDB. Unfortunately, valgrind's memcheck reports an uninitialized variable problem in the …
[Read more]
Percona recently open sourced TokuBackup, a library that may be used to take a
snapshot of a set of files while these files are being changed by
a running application like MySQL or MongoDB. Making
TokuBackup open source allows a larger set of users to improve
and extend the software. This blog describes how the
Address Sanitizer and Thread Sanitizer found bugs in the TokuBackup
library.
The TokuBackup library is used by Percona Server for MySQL and …
Several reports we’re published in the news about how easy it is to access data stored in some NoSQL systems, including MongoDB. This is not surprising because security was rather relaxed in earlier versions of MongoDB . This post lists some of the common vulnerabilities in MongoDB and Percona TokuMX.
Network Security
One key point is to ensure that the bind_ip
setting
is correctly adjusted: in MongoDB 2.4 and Percona TokuMX, it is
not set which means that the server will listen to all available
network interfaces. If proper firewall rules (iptables, Security
Groups in AWS, …) are not in place, your dataset could easily be
queried from anywhere in the world!
In MongoDB 2.6+, bind_ip
is set by default to
127.0.0.1 in the official .deb and .rpm packages. This is great
from a security point of view, but remember that you’ll still
have to adjust the setting if the application servers are not …
This blog describes how the Address Sanitizer found bugs in the TokuFT
(now PerconaFT) storage library. TokuFT is the
storage library used by the TokuDB for MySQL and TokuMX for MongoDB products. TokuFT is
currently tested with valgrind's memcheck tool. However, memcheck
is very slow compared to native execution, so memcheck is not
always used for large tests. This leads to missed
bugs.
The Address Sanitizer is a memory …
TokuFT (now called PerconaFT) is the write optimized storage component used by
TokuDB for MySQL and TokuMX for MongoDB. Since TokuFT is its
own component, TokuFT can be tested independently of TokuDB and
TokuMX. Some of the TokuFT tests use valgrind's memcheck,
helgrind, and DRD tools to identify bugs.
Helgrind and DRD find data races in multi-threaded programs at
runtime rather than at compile time. In my experience with
these …
In my recent benchmarks for MongoDB, we can see that the two engines WiredTiger and TokuMX struggle from periodical drops in throughput, which is clearly related to a checkpoint interval – and therefore I correspond it to a checkpoint activity.
The funny thing is that I thought we solved checkpointing issues in InnoDB once and for good. There are bunch of posts on this issue in InnoDB, dated some 4 years ago. We did a lot of research back then working on a fix for Percona Server
[Read more]Previously I tested Tokutek’s Fractal Trees (TokuMX & TokuMXse) as MongoDB storage engines – today let’s look into the MySQL area.
I am going to use modified LinkBench in a heavy IO-load.
I compared InnoDB without compression, InnoDB with 8k
compression, TokuDB with quicklz compression.
Uncompressed datasize is 115GiB, and cachesize
is 12GiB for InnoDB and 8GiB +
4GiB OS cache for TokuDB.
Important to note is that I used
tokudb_fanout=128, which is only available in
our latest Percona Server release.
I …
Today Percona announced the immediate availability of 24/7, enterprise-class support for MongoDB and TokuMX. The new support service helps organizations achieve maximum application performance without database bloat. Customers have round-the-clock access (365 days a year) to the most trusted team of database experts in the open source community.
The news means that Percona now offers support across the entire open-source database ecosystem, including the entire LAMP stack (Linux, Apache, MySQL, and PHP/Python/Perl), providing a single, expert, proven service provider for companies to turn to in good times (always best to be proactive) – and during emergencies, too.
Today’s support announcement follows …
[Read more]Quite often, especially for benchmarks, I am trying to limit available memory for a database server (usually for MySQL, but recently for MongoDB also). This is usually needed to test database performance in scenarios with different memory limits. I have physical servers with the usually high amount of memory (128GB or more), but I am interested to see how a database server will perform, say if only 16GB of memory is available.
And while InnoDB usually respects the setting of innodb_buffer_pool_size in O_DIRECT mode (OS cache is not being used in this case), more engines (TokuDB for MySQL, MMAP, WiredTiger, RocksDB for MongoDB) usually get benefits from OS cache, and Linux kernel by default is generous enough to allocate as much memory as available. There I should note that while TokuDB (and TokuMX for MongoDB) supports DIRECT mode (that is bypass OS cache), we found there is a performance gain if OS cache is used for compressed pages.
…[Read more]Being schemaless is one of the key features of MongoDB. On the bright side this allows developers to easily modify the schema of their collections without waiting for the database to be ready to accept a new schema. However schemaless is not free and one of the drawbacks is write amplification. Let’s focus on that topic.
Write amplification?
The link between schema and write amplification is not obvious at first sight. So let’s first look at a table in the relational world:
mysql> SELECT * FROM user LIMIT 2; +----+-------+------------+-----------+-----------+----------------------------------+---------+-----------------------------------+------------+------------+ | id | login | first_name | last_name | city | country | zipcode | address | password | birth_year | …[Read more]