I just got back from a vacation to see articles about Business Source Licensing. I’ve divided my thoughts into four parts here: Opensource and its merits, Is unpaid opensource usage bad?, MariaDB’s “Problem”, Business Source Licensing. If you haven’t read them yet, here’s some mandatory reading:
[Read more]“Application designers need to start by thinking about what level of data integrity they need, rather than what they want, and then design their technology stack around that reality. Everyone would like a database that guarantees perfect availability, perfect consistency, instantaneous response times, and infinite throughput, but it´s not possible to create a product with [...]
I have patched up a MariaDB version with JSON support, just for
the fun of it. This is not the best version of MariaDB around, as
I am not a MariaDB developer by any means, and although I have
played with the MySQL and MariaDB sources before, I have never
attemped to look like I know it in detail. So although this
works, it's probably full of memory leaks, errors and bad code
(my additions, that is).
That said, it actually works. Surprise! For a simple prototype,
that is to show off a specific feature.
So, this is what I have: I grabbed MariaDB 10.0.2 sources and
worked from there. To support the JSON specifics, I included the
Jansson
C-library for JSON. So far so good, then I wanted a JSON
datatype, that was the first step. Adding a new datatype to
MariaDB / MySQL is a pretty major undertaking though, so I
decided to try something different, I decided to kidnap …
Shard-Query examines INFORMATION_SCHEMA.PARTITIONS to determine if a table is partitioned. When a table is partitioned, Shard-Query creates multiple background queries, each limited to a single partition. Unfortunately, it seems that examining INFORMATION_SCHEMA.PARTITIONS causes query plans to change after the view is accessed.
I have reported bug 69179 to MySQL AB Oracle Corporation(old habits die hard).
Be careful: If you have automated tools (like schema management GUI tools) then make sure they don’t examine INFORMATION_SCHEMA.PARTITIONS or you may get bad plans until you analyze your tables or restart the database, even if using persistent stats.
I can only get the bug to happen when a WHERE clause is issued that limits access to a single partition. It may be that the per partition statistics …
[Read more]Drupal is one of the most popular Content Management Systems (CMS) and is used increasingly in high-visibility sites, such as www.whitehouse.gov. This has brought a lot of attention on how to get the most performance out of Drupal and how to improve the availability of such sites. In this blog series I'll take you through the basics and on through to designing your own HA Drupal site.
But first, we need to understand what the challenges are in getting Drupal (or indeed any CMS) working on multiple servers in such a way as to ensure high availability and performance.
Drupal is one of the most popular Content Management Systems (CMS) and is used increasingly in high-visibility sites, such as www.whitehouse.gov. This has brought a lot of attention on how to get the most performance out of Drupal and how to improve the availability of such sites. In this blog series I'll take you through the basics and on through to designing your own HA Drupal site.
But first, we need to understand what the challenges are in getting Drupal (or indeed any CMS) working on multiple servers in such a way as to ensure high availability and performance.
Everybody seems to be looking at and debating NoSQL these
days, and so am I and I thought I'd say a few words about it.
Which is not to say I haven't said stuff before, bit them I was
mainly targeting specific attributes of many NoSQL solutions
(like "eventual consistency" or, as you might call it, "instant
inconsistency", What I was opposing is that "eventual
consistency" has anything to do with just that, consistency.
Rather, what this means is that at any point in time the system
is inconsistent, and even if it might be consistent, you cannot
rely on it being so. Which is fine, but don't call it
consistency, call it inconsistency. Allowing a database to be
somewhat inconsistent doesn't necessarily mean that it's
something wrong with it).
All this said, what is going on here, why are we MySQL and
MariaDB users seeing so many MongoDB,
Cassandra and LevelDB applications pop up? Come on, …
Occasionally it is useful to know what a MySQL command is doing internally. Just looking into the MySQL source directory can be overwhelming. Knowing the basics of the handler interface and the sql parser can be a great start for reading the source code to understand what MySQL does under the hood. Here I will cover a little bit about how the SQL syntax is defined.
Everything starts with lex.h and sql_yacc.yy in the sql/ dir. lex.h contains all the functions and symbols used to make up the SQL syntax. The sql_yacc.yy file describes the relationships between these symbols and the C functions responsible for executing them. I’m not sure why some symbol definitions end in _SYM and others don’t. Looking in lex.h “FLUSH” is defined as FLUSH_SYM. To see all the places where flush is allowed in the SQL go back to sql_yacc.yy and grep for it.
The first important section looks like this:
/* flush things */ …[Read more]
Yes, finally! This took some time, but I have been so busy with
other things, work-related as well as domestic, that I just
haven't had the time for this. But finally version 1.6 is
available for download from sourceforge. The downloads is as
usual the autoconf enabled source code and PDF documentation in
PDF.
So, what is new you ask, well there is one big new feature which
took a lot more effort than I expected. When this program was
written at first, I still have the table/use use in mind. What
this means is that I visioned JSON objects to be mapped to a
table. This is not how programmers view JSON, but this is how
data is viewed in many databases, even NoSQL ones such as
MongoDB. So I wanted an import tool for simple row-structured
JSON objects.
Now, there is a different way to look at things, which is …
At Open Query we steer clear of code development for clients. We sometimes advise on code, but as a company we don’t want to be in the programmer role. Naturally we do write scripts and other necessities to do our job.
Assisting with an Open Source project, I encountered three old UDFs. User Defined Functions are native functions that are compiled and then loaded by the server similar to a plugin. As with plugins, compiling can be a pest as it requires some of the server MySQL header files and matching build switches to the server it’s going to be loaded in. Consequentially, binaries cannot be considered safely portable and that means that you don’t really want to have a project rely on UDFs as it can hinder adoption quite severely.
Since MySQL 5.0 we can also use SQL stored functions and procedures. Slower, of course, but …
[Read more]