<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>
<channel>
	<title>Comments on: MySQL Partitioning on Application Side</title>
	<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/</link>
	<description></description>
	<pubDate>Sat, 05 Jul 2008 12:34:23 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
		<item>
		<title>By: prescription of soma</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-3675</link>
		<dc:creator>prescription of soma</dc:creator>
		<pubDate>Wed, 02 Jul 2008 04:41:55 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-3675</guid>
		<description>&lt;strong&gt;soma&lt;/strong&gt;

soma kAŠpek</description>
		<content:encoded><![CDATA[<p><strong>soma</strong></p>
<p>soma kAŠpek</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JDBC Books</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-2021</link>
		<dc:creator>JDBC Books</dc:creator>
		<pubDate>Sun, 11 May 2008 23:57:21 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-2021</guid>
		<description>&lt;strong&gt;Hubs of MySQL Partitioning on Application Side&lt;/strong&gt;

hubs about JDBC Books to books WHERE orders.productName = books.name. I think implementing it as a MySQL Proxy LUA script or a JDBC driver would not make a big difference on the approach. I would prefer MySQL Proxy a lot though. ...</description>
		<content:encoded><![CDATA[<p><strong>Hubs of MySQL Partitioning on Application Side</strong></p>
<p>hubs about JDBC Books to books WHERE orders.productName = books.name. I think implementing it as a MySQL Proxy LUA script or a JDBC driver would not make a big difference on the approach. I would prefer MySQL Proxy a lot though. &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pero on anything &#187; Blog Archive &#187; HSCALE 0.1 released - Partitioning Using MySQL Proxy</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-357</link>
		<dc:creator>pero on anything &#187; Blog Archive &#187; HSCALE 0.1 released - Partitioning Using MySQL Proxy</dc:creator>
		<pubDate>Wed, 09 Apr 2008 23:17:20 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-357</guid>
		<description>[...] written here and here I&#8217;ve been working on a MySQL Proxy Lua module that transparently splits up tables [...]</description>
		<content:encoded><![CDATA[<p>[&#8230;] written here and here I&#8217;ve been working on a MySQL Proxy Lua module that transparently splits up tables [&#8230;]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pero</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-326</link>
		<dc:creator>pero</dc:creator>
		<pubDate>Fri, 04 Apr 2008 23:16:05 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-326</guid>
		<description>Marco,

MySQL Proxy is already very stable (partly due to the expertise Jan has gathered with developing lighttpd which architecture seems to be quite similar) and is maturing at a high speed in my opinion. I remember the time when you could have used a MySQL BETA version that would for sure much better than other products already claiming a "Service Pack" or two. These times seem to be gone for the server alone (but the quality is still very good even in early releases). I'm working with the proxy for a couple of weeks now and everything works like a charm. 

At the end I don't rely on the labeled version number or alpha status but on what our tests - especially unit-, concurrency-, load- and performance tests - say. And all looks good right now, we didn't have a single problem related to the proxy.

As for what a manager would say: I'm in the comfortable (or uncomfortable if it goes terribly wrong) situation to be the executive "manager". ;)</description>
		<content:encoded><![CDATA[<p>Marco,</p>
<p>MySQL Proxy is already very stable (partly due to the expertise Jan has gathered with developing lighttpd which architecture seems to be quite similar) and is maturing at a high speed in my opinion. I remember the time when you could have used a MySQL BETA version that would for sure much better than other products already claiming a &#8220;Service Pack&#8221; or two. These times seem to be gone for the server alone (but the quality is still very good even in early releases). I&#8217;m working with the proxy for a couple of weeks now and everything works like a charm. </p>
<p>At the end I don&#8217;t rely on the labeled version number or alpha status but on what our tests - especially unit-, concurrency-, load- and performance tests - say. And all looks good right now, we didn&#8217;t have a single problem related to the proxy.</p>
<p>As for what a manager would say: I&#8217;m in the comfortable (or uncomfortable if it goes terribly wrong) situation to be the executive &#8220;manager&#8221;. <img src='http://pero.blogs.aprilmayjune.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Marco</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-325</link>
		<dc:creator>Marco</dc:creator>
		<pubDate>Fri, 04 Apr 2008 17:11:09 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-325</guid>
		<description>I too am intrigued by the MySQL Proxy option. Aren't you concerned about it's "alpha" status?! I've waited many months for it to progress at least to beta; my management will think I've lost it if I propose that our data flow through an alpha release. (I realize it's all relative; Senior managers do not)

cheers,
Marco</description>
		<content:encoded><![CDATA[<p>I too am intrigued by the MySQL Proxy option. Aren&#8217;t you concerned about it&#8217;s &#8220;alpha&#8221; status?! I&#8217;ve waited many months for it to progress at least to beta; my management will think I&#8217;ve lost it if I propose that our data flow through an alpha release. (I realize it&#8217;s all relative; Senior managers do not)</p>
<p>cheers,<br />
Marco</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Xaprb</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-314</link>
		<dc:creator>Xaprb</dc:creator>
		<pubDate>Wed, 26 Mar 2008 23:43:28 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-314</guid>
		<description>Pero, just a quick note -- MySQL Cluster is really a very special-case product and you are going the right route with application partitioning instead.  Also, reading through your other comments and responses, I think the other commenters are sort of taking for granted that this is an example, and just trying to add helpful extra info :-)

I agree with Ronald -- help from someone who's done this before would be worth its weight in gold.  Having just walked a company through it for the first time, I can say there is a lot more to it than it seems like.

Archiving is also a good idea -- but it needs to be both/and, not either/or.  Maatkit has a handy archiving tool in it.</description>
		<content:encoded><![CDATA[<p>Pero, just a quick note &#8212; MySQL Cluster is really a very special-case product and you are going the right route with application partitioning instead.  Also, reading through your other comments and responses, I think the other commenters are sort of taking for granted that this is an example, and just trying to add helpful extra info <img src='http://pero.blogs.aprilmayjune.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>I agree with Ronald &#8212; help from someone who&#8217;s done this before would be worth its weight in gold.  Having just walked a company through it for the first time, I can say there is a lot more to it than it seems like.</p>
<p>Archiving is also a good idea &#8212; but it needs to be both/and, not either/or.  Maatkit has a handy archiving tool in it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pero</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-313</link>
		<dc:creator>pero</dc:creator>
		<pubDate>Wed, 26 Mar 2008 23:24:12 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-313</guid>
		<description>Ronald,

as said above: THIS IS JUST AN EXAMPLE with A SINGLE TABLE (the table "partition" is introduced as part of the solutions)! It does not reflect any aspect of any of the projects we are working on and it is indeed nothing one should apply to real life applications (as said in my previous comment). 

I just thought it would help illustrate the possible partitioning solutions which I wanted to discuss in the first place.

Greetings,

Peter

[Edit] I cleaned up the example a bit and only left the redundancy on product category. [Edit]</description>
		<content:encoded><![CDATA[<p>Ronald,</p>
<p>as said above: THIS IS JUST AN EXAMPLE with A SINGLE TABLE (the table &#8220;partition&#8221; is introduced as part of the solutions)! It does not reflect any aspect of any of the projects we are working on and it is indeed nothing one should apply to real life applications (as said in my previous comment). </p>
<p>I just thought it would help illustrate the possible partitioning solutions which I wanted to discuss in the first place.</p>
<p>Greetings,</p>
<p>Peter</p>
<p>[Edit] I cleaned up the example a bit and only left the redundancy on product category. [Edit]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ronald Bradford</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-312</link>
		<dc:creator>Ronald Bradford</dc:creator>
		<pubDate>Wed, 26 Mar 2008 21:56:15 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-312</guid>
		<description>Peter,

I find a number of fundamental data architecture in-efficiencies in your schema.  You really should invest in an MySQL expert to assist in the most optimal achitecture for large systems.

At worst, be sure to goto "The top 20 design tips for data architects" at the MySQL conference, you will learn a few things not to do!

Regards

Ronald Bradford
www.primebase.org
PBXT - The Community Storage Engine</description>
		<content:encoded><![CDATA[<p>Peter,</p>
<p>I find a number of fundamental data architecture in-efficiencies in your schema.  You really should invest in an MySQL expert to assist in the most optimal achitecture for large systems.</p>
<p>At worst, be sure to goto &#8220;The top 20 design tips for data architects&#8221; at the MySQL conference, you will learn a few things not to do!</p>
<p>Regards</p>
<p>Ronald Bradford<br />
<a href="http://www.primebase.org" rel="nofollow" onclick="javascript:pageTracker._trackPageview('/http://www.primebase.org');">http://www.primebase.org</a><br />
PBXT - The Community Storage Engine</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pero</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-311</link>
		<dc:creator>pero</dc:creator>
		<pubDate>Wed, 26 Mar 2008 19:06:29 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-311</guid>
		<description>Jay, yes it is some kind of nit-picking ;) It is just an example. 

OTOH some kind of redundant information (like having the product category in the orders - name and price are still just for illustration) would make partitioning a lot easier. (Using a categoryId that refers to a category table would make more sence).

The grade of redundancy depends on the type of data and the type of queries you want to perform against your data. If 90% of your queries on orders involve a productCategory it might make sense to store that information along with the order. Actually, I use this kind of redundancy in our application for almost all of the huge data sets. Otherwise certain queries would be impossible to run because of the JOIN size/overhead or at least would be painfully slow. And assuming that a productCategory cannot change after an order has been placed makes redundancy less evil. The latter assumption depends on your application and data design of course.

Anyway, normalization is a good thing and should be enforced where possible but sometimes you have to add redundancy.

Cheers,

Peter</description>
		<content:encoded><![CDATA[<p>Jay, yes it is some kind of nit-picking <img src='http://pero.blogs.aprilmayjune.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> It is just an example. </p>
<p>OTOH some kind of redundant information (like having the product category in the orders - name and price are still just for illustration) would make partitioning a lot easier. (Using a categoryId that refers to a category table would make more sence).</p>
<p>The grade of redundancy depends on the type of data and the type of queries you want to perform against your data. If 90% of your queries on orders involve a productCategory it might make sense to store that information along with the order. Actually, I use this kind of redundancy in our application for almost all of the huge data sets. Otherwise certain queries would be impossible to run because of the JOIN size/overhead or at least would be painfully slow. And assuming that a productCategory cannot change after an order has been placed makes redundancy less evil. The latter assumption depends on your application and data design of course.</p>
<p>Anyway, normalization is a good thing and should be enforced where possible but sometimes you have to add redundancy.</p>
<p>Cheers,</p>
<p>Peter</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jay Pipes</title>
		<link>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-310</link>
		<dc:creator>Jay Pipes</dc:creator>
		<pubDate>Wed, 26 Mar 2008 18:40:58 +0000</pubDate>
		<guid>http://pero.blogs.aprilmayjune.org/2008/03/26/mysql-partitioning-on-application-side/#comment-310</guid>
		<description>Just nit-picking, but this:

CREATE TABLE orders (
    orderId BIGINT(20) NOT NULL,

    productCategory VARCHAR(50),
    productName VARCHAR(255),
    productPrice FLOAT,

    PRIMARY KEY (orderId)
);

is not a normalized schema.  Why wouldn't you have a productID that was stored in the Products table with the productName, productPrice, productCategory, etc?  Why is this information stored in the Orders table as redundant data?

Cheers,

Jay</description>
		<content:encoded><![CDATA[<p>Just nit-picking, but this:</p>
<p>CREATE TABLE orders (<br />
    orderId BIGINT(20) NOT NULL,</p>
<p>    productCategory VARCHAR(50),<br />
    productName VARCHAR(255),<br />
    productPrice FLOAT,</p>
<p>    PRIMARY KEY (orderId)<br />
);</p>
<p>is not a normalized schema.  Why wouldn&#8217;t you have a productID that was stored in the Products table with the productName, productPrice, productCategory, etc?  Why is this information stored in the Orders table as redundant data?</p>
<p>Cheers,</p>
<p>Jay</p>
]]></content:encoded>
	</item>
</channel>
</rss>
