Let's Party!

What is it

Letís Party! is a jdbc driver that provides any database with partitioning capabilities to boost performance. Applications donít have to be rewritten to use Letís Party!, because it works on top of your regular JDBC driver.
This way a table containing 10,000,000 rows can be easily splitted into 10 tables of 1,000,000 rows each, without the need to re-write the client code accessing the db.
Since there is no need for any changes to the client code you can test different configurations with minimal effort: you can increase (decrease) the number of tables thus reducing (increasing) the number of rows per tables, or you can plug (or unplug) Let's Party! on an existing project.

How it works

A configuration file describes how a table is partitioned, that is the columns that are used to decide on which partition data has to be read/written and how data is partitioned. When a SQL statement regarding a non-partitioned table is issued, Let's Party! simply passes it to the real JDBC driver (it acts as a fully transparent filter between the client and the real driver).
When a SQL statement regarding a partitioned table is issued, Let's Party! changes the statement in order to access the minimum number of partitioned tables. Please visit how Let's Party! changes SQL statements to get more informations.
Please read some very important things you should know before using Let's Party! before starting.

Why table partitioning?

  1. If you put your partitions on different hard disks you will gain throughput
  2. Scans of tables will require less time, because you will access less data -> a little table scan can be much faster than an access by index on a big table
  3. You can put partitions you use less often on slower hard disks or on the network
  4. (MySql) You can compress data on partitions you don't want to write to
  5. You can put partitions on different clusters, for example using C-JDBC (beware: selecting from more than one partition from different clusters will not work because C-JDBC can't do unions between two clusters)
  6. On future versions there will be the option to remove a column (part of an index) if this has low cardinality and replace it with different partitions