Next gen app providers (and perhaps more specifically, database architects) are clamoring for database technologies that just work. At least, that’s the message we got from one of our newest customers: Mozilla. Earlier this month, we caught up with Sheeri Cabral, database architect at Mozilla and and overall MySQL rock star, to get the down-and-dirty on why [...] Read More
Lets see what HA solutions can be designed in mysql and where are they suited.
1. Single master - single slave.
M(RW)|S(R) A simple master slave solution can be used for a small site - where all the inserts go into the master and some (non-critical) requests are served from the slave. In case if the master crashes, the slave can be simply promoted as the master - once it has replicated the "
There is a huge amount of buzz around NOSQL, and we at ScaleBase are happy to see companies making the move to NOSQL. Despite what some people might think, we consider it a blessed change. It is time for applications to stop having a single data store – namely a relational database (probably Oracle) – and start using the best tool for the job.
In the last couple of years, since NOSQL technologies broke into our world, a lot of experience has been gathered on how to use them. Mainly, we see NoSQL technologies used for one of the following scenarios:
- Queries that require a very short response time
- Storing data without a well-defined schema, or storing data with a frequently modified schema
Now, I’m not in any way saying that NOSQL solutions are not used for other scenarios as well; I’m only saying that from our experience here at ScaleBase , these are the most common scenarios.
…[Read more]ScaleBase Releases Database DBT2 Performance Results
Technology achieves unprecedented transaction speed for a MySQL database at a low cost
Boston, Mass., December 12, 2011 – ScaleBase, Inc. today announced the results of its MySQL database benchmark, based on the industry-standard DBT-2 test. ScaleBase has achieved an unmatched 180,000 Transactions per Minute – the highest result for a MySQL database – while running on an Amazon RDS environment. Cost per Transaction was reported to be 50 cents, which demonstrates the cost-effectiveness of the ScaleBase solution on the Amazon EC2 cloud. Full details of the benchmark can be found at …
[Read more]There are several ways to implement sharding in your application. The first and by far the most popular, is to implement it inside your application. It can be implemented as part of your own Data Access Layer, database driver, or an ORM extension. However, there are many limitations with such implementation, which drove us, at ScaleBase, to look for an alternative architecture.
As the above diagram shows, ScaleBase is implemented as a standalone proxy. There are several benefits to using such an architecture.
First and foremost, since the sharding logic is not embedded inside the application, third party applications can be used, be it MySQL Workbench, MySQL command line interface or any other third party product. This translates to a huge saving in the day-to-day costs of both developers and system administrators.
Backup can be executed via the proxy, and so allows users to consistently backup a sharded environment – not …
[Read more]
We at ScaleBase talk about sharding so much, it’s difficult for
us to see why someone wouldn’t want to shard. But just because
we’re so enthusiastic about our transparent sharding mechanism,
it doesn’t mean we can’t understand the very basic question,
“When do I shard?”
Well, it’s not the most difficult question to answer. I’ll keep
it short: if your database exceeds the memory you have on a
single machine, you should shard. If you hit I/O, your
performance suffers, and sharding will assist.
Why? That’s easy to explain.
Databases in general (and MySQL is no exception) try to cache
data. Because accessing memory is so much faster than accessing
disk (even with SSDs), database providers have developed rather
sophisticated caching algorithms. For instance, running a query
caches the query and its results. Indexes are stored in memory so
that, when running a query, the database doesn’t have to hit the
disk …
Oracle's turn-about announcement of a NoSQL product wasn't really surprising. When Oracle spends time and effort putting down a technology, you can bet that its secretly impressed, and trying to re-implement it in its back room. So Oracle's paper "Debunking the NoSQL Hype" should really have been read as a backhanded product announcement. (By the way, don't click that link; the paper appears to have been taken down. Surprise.)
I have to agree with DataStax and other developers in the NoSQL movement: Oracle's announcement is a …
[Read more]In the previous post of this series (which can be found here) I discussed how to migrate your data once you have decided how to shard your schema.
Once your data is sharded, it’s time to modify your application code. I will not dive into the many open source platforms that provide partial sharding support (Hibernate Shards, Gizzard, and the like), and will take Java (sorry, old habits are hard to overcome) as an example – however, the same holds true for any programming language.
Without Using ORM
If you wrote your code without an Object/Relational Mapping tool, kudos to you. Sharding will be easier, as you control the SQL statements.
Upgrading Connection Pool
Your first task is to write a connection pool that is “sharding”
aware. The class should look something like this:
…
In the previous post of this series (which can be found here) I discussed how to identify tables that can serve as good candidates for sharding.
Once you have decided which tables should be sharded (all the rest should be global tables), the choice of sharding keys is rather straightforward, as most will use the table primary key as the shard key. Of course, if multiple tables are sharded, and there is a foreign key relationship between these tables, then the foreign key will serve as the shard key for some tables.
Many people attempt to shard based on customer_id or a resource id, but I have seen how this usually fails in production environments. It is very hard to know in advance which customers belong together in the same database, and since customers can suddenly increase their traffic, this might create an unbalanced situation in which some …
[Read more]Backing up data is critical for production databases – and there are a lot of well-known solutions for backing up databases.
When the database is sharded, backing up data becomes problematic. If the backup is not synchronized across all shards, data inconsistency might occur. In this blog post I’ll try to detail the possible backup scenarios for sharded databases when using ScaleBase.
Backup Types
Let’s start by understanding the different backup types that are out there. You can read all about it here.
A physical backup involves copying all database files to a different location. Copying can take several hours for a decent database if it’s done to a disk or a tape. It might take only seconds if the database files reside on SAN/NAS storage hardware that supports snapshot technology.
A logical backup is a …
[Read more]