<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Xaprb &#187; Keith Murphy</title>
	<atom:link href="http://www.xaprb.com/blog/tag/keith-murphy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaprb.com/blog</link>
	<description>Stay curious!</description>
	<lastBuildDate>Thu, 09 Feb 2012 03:58:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>A review of MySQL Administrator&#8217;s Bible</title>
		<link>http://www.xaprb.com/blog/2009/06/30/a-review-of-mysql-administrators-bible/</link>
		<comments>http://www.xaprb.com/blog/2009/06/30/a-review-of-mysql-administrators-bible/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 13:43:19 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[Review]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Keith Murphy]]></category>
		<category><![CDATA[Sheeri Kritzer Cabral]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1144</guid>
		<description><![CDATA[MySQL Administrator&#8217;s Bible by Sheeri K. Cabral and Keith Murphy, 2009. Page count: 800+ pages. (Here&#8217;s a link to the publisher&#8217;s site.) This book is a comprehensive reference guide to MySQL that&#8217;s accessible to beginning DBAs or DBAs familiar with another database. It has enough detail to be a useful companion throughout a DBA&#8217;s career. [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/02/19/a-review-of-understanding-mysql-internals-by-sasha-pachev/' rel='bookmark' title='Permanent Link: A review of Understanding MySQL Internals by Sasha Pachev'>A review of Understanding MySQL Internals by Sasha Pachev</a></li>
<li><a href='http://www.xaprb.com/blog/2010/01/15/review-get-it-done-with-mysql-peter-brawley-arthur-fuller/' rel='bookmark' title='Permanent Link: A review of Get it Done with MySQL 5&#038;6 by Peter Brawley and Arthur Fuller'>A review of Get it Done with MySQL 5&#038;6 by Peter Brawley and Arthur Fuller</a></li>
<li><a href='http://www.xaprb.com/blog/2011/06/09/a-review-of-mysql-replication-by-russell-dyer/' rel='bookmark' title='Permanent Link: A review of MySQL Replication by Russell Dyer'>A review of MySQL Replication by Russell Dyer</a></li>
<li><a href='http://www.xaprb.com/blog/2011/02/13/a-review-of-postgresql-9-0-high-performance-by-gregory-smith/' rel='bookmark' title='Permanent Link: A review of PostgreSQL 9.0 High Performance by Gregory Smith'>A review of PostgreSQL 9.0 High Performance by Gregory Smith</a></li>
<li><a href='http://www.xaprb.com/blog/2010/10/10/a-review-of-mysql-5-1-plugin-development-by-golubchik-and-hutchings/' rel='bookmark' title='Permanent Link: A review of MySQL 5.1 Plugin Development by Golubchik and Hutchings'>A review of MySQL 5.1 Plugin Development by Golubchik and Hutchings</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<div id="attachment_1145" class="wp-caption alignleft" style="width: 250px"><a href="http://www.amazon.com/MySQL-Administrators-Bible-Wiley/dp/0470416912?tag=xaprb-20"><img src="http://www.xaprb.com/blog/wp-content/uploads/2009/06/mysql-administrators-bible-240x300.jpg" alt="MySQL Administrator&#039;s Bible" title="MySQL Administrator&#039;s Bible" width="240" height="300" class="size-medium wp-image-1145" /></a><p class="wp-caption-text">MySQL Administrator's Bible</p></div>

<p><a href="http://www.amazon.com/MySQL-Administrators-Bible-Wiley/dp/0470416912?tag=xaprb-20">MySQL Administrator&#8217;s Bible</a> by Sheeri K. Cabral and Keith Murphy, 2009. Page count: 800+ pages.  (Here&#8217;s a <a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470416912.html">link to the publisher&#8217;s site</a>.)</p>

<p>This book is a comprehensive reference guide to MySQL that&#8217;s accessible to beginning DBAs or DBAs familiar with another database.  It has enough detail to be a useful companion throughout a DBA&#8217;s career.  It also covers many related technologies, such as memcached, at a moderate-but-useful level of detail.  This isn&#8217;t exactly a how-to book, and it isn&#8217;t exactly a reference manual; it&#8217;s more of a blend of the two.</p>

<p>The audience will depend on personal preferences.  Some of the reference material is the type of thing I would look up with command-line <code>--help</code> options or the MySQL manual.  But there are times when the reference aspect of the book is uniquely valuable.  For example, the online documentation tends to list things alphabetically; the book might break them down into groups by function.  An example is the <code>sql_mode</code> parameters, which it groups into categories like &#8220;Getting rid of silent failures, silent conversions, and silently allowing invalid data.&#8221;</p>

<p>The non-reference aspect of the book has a lot of examples of how to do things, such as how to set up replication over SSL.  This is exactly what I&#8217;d look for in a book.  Otherwise, you&#8217;re reduced to reading documentation (inefficient, mind-numbing) or trusting the information you find online, which is generally not something I do.</p>

<p>Speaking of trusting information, I was happy to see very few typos or errors.  Occasionally I caught a minor slip.  For example, when discussing the limited memory a 32-bit mysqld can use because it runs in a single process, there&#8217;s a typo that mis-states this architectural feature as &#8220;mysqld is currently single-threaded,&#8221; which is not quite the same thing.  Overall, you can rely on the information you&#8217;ll read in this book.</p>

<p>The book is divided into four parts: first steps, developing with MySQL, core administration, and a set of chapters and appendixes grouped under extending your skills.  I think this organization works well.  You can read the full Table Of Contents at the publisher&#8217;s site linked above.</p>

<p>Coverage is for MySQL 5.1 and 6.0.  As we know, 5.1 was GA&#8217;ed and 6.0 has been killed and replaced by a new release policy.  This gives a slightly odd feeling to some passages, which speak about 5.1 in the past tense and 6.0 in the present tense!  As far as I know, however, this book contains the most complete coverage of MySQL 5.1 in print.  The only other similar book I&#8217;ve read that covers 5.1 is <em><a href="http://tinyurl.com/highperfmysql">High Performance MySQL 2nd Edition</a></em> &#8212; and that one is a bit light on details because there wasn&#8217;t a lot of production knowledge of 5.1 yet  (I&#8217;m the lead author of <em>HPM2e</em>, by the way).</p>

<p>Speaking of which, I think that <em>MySQL Administrator&#8217;s Bible</em> is a very good complement to <em>High Performance MySQL, 2nd Edition</em>. The former is useful to people who have varying levels of knowledge, while the latter assumes a lot of experience and doesn&#8217;t cover introductory material much.  And the books have different topics, of course.  So if you&#8217;re new to databases, or if you&#8217;re new to MySQL, you might do well to start with Sheeri&#8217;s book, then continue or supplement your education with ours.</p>

<p>All in all, this is a book that&#8217;s well worth buying if you&#8217;re going to administer a serious MySQL installation.  I tip my hat to Sheeri &#8212; I don&#8217;t know how she did it.  It&#8217;s a huge project and she pulled through the last (and by far most difficult) part of it by herself.</p>

<p><em>Disclosure: I tried to be a tech reviewer for this book, but I was over-committed and had to back out after a while.</em></p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2010/02/19/a-review-of-understanding-mysql-internals-by-sasha-pachev/' rel='bookmark' title='Permanent Link: A review of Understanding MySQL Internals by Sasha Pachev'>A review of Understanding MySQL Internals by Sasha Pachev</a></li>
<li><a href='http://www.xaprb.com/blog/2010/01/15/review-get-it-done-with-mysql-peter-brawley-arthur-fuller/' rel='bookmark' title='Permanent Link: A review of Get it Done with MySQL 5&#038;6 by Peter Brawley and Arthur Fuller'>A review of Get it Done with MySQL 5&#038;6 by Peter Brawley and Arthur Fuller</a></li>
<li><a href='http://www.xaprb.com/blog/2011/06/09/a-review-of-mysql-replication-by-russell-dyer/' rel='bookmark' title='Permanent Link: A review of MySQL Replication by Russell Dyer'>A review of MySQL Replication by Russell Dyer</a></li>
<li><a href='http://www.xaprb.com/blog/2011/02/13/a-review-of-postgresql-9-0-high-performance-by-gregory-smith/' rel='bookmark' title='Permanent Link: A review of PostgreSQL 9.0 High Performance by Gregory Smith'>A review of PostgreSQL 9.0 High Performance by Gregory Smith</a></li>
<li><a href='http://www.xaprb.com/blog/2010/10/10/a-review-of-mysql-5-1-plugin-development-by-golubchik-and-hutchings/' rel='bookmark' title='Permanent Link: A review of MySQL 5.1 Plugin Development by Golubchik and Hutchings'>A review of MySQL 5.1 Plugin Development by Golubchik and Hutchings</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/06/30/a-review-of-mysql-administrators-bible/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Spring 2008 issue of MySQL Magazine</title>
		<link>http://www.xaprb.com/blog/2008/04/19/spring-2008-issue-of-mysql-magazine/</link>
		<comments>http://www.xaprb.com/blog/2008/04/19/spring-2008-issue-of-mysql-magazine/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 05:28:18 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[High Performance MySQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Keith Murphy]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQL Magazine]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/04/19/spring-2008-issue-of-mysql-magazine/</guid>
		<description><![CDATA[Keith Murphy and his hard-working crew have released the spring 2008 issue of MySQL Magazine. Go take a look &#8212; it includes quite a few articles on various topics, even a mention of our upcoming book (High Performance MySQL, Second Edition). Further Reading:Subscribe to Oracle Magazine How to get your session accepted to MySQL Conference [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2011/08/28/subscribe-to-oracle-magazine/' rel='bookmark' title='Permanent Link: Subscribe to Oracle Magazine'>Subscribe to Oracle Magazine</a></li>
<li><a href='http://www.xaprb.com/blog/2007/10/05/how-to-get-your-session-accepted-to-mysql-conference-2008/' rel='bookmark' title='Permanent Link: How to get your session accepted to MySQL Conference 2008'>How to get your session accepted to MySQL Conference 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2008/01/25/my-presentations-at-the-2008-mysql-conference-and-expo/' rel='bookmark' title='Permanent Link: My presentations at the 2008 MySQL Conference and Expo'>My presentations at the 2008 MySQL Conference and Expo</a></li>
<li><a href='http://www.xaprb.com/blog/2008/05/02/come-to-becamp-2008/' rel='bookmark' title='Permanent Link: Come to beCamp 2008'>Come to beCamp 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/17/mysql-conference-and-expo-2008-day-two/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Two'>MySQL Conference and Expo 2008, Day Two</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.paragon-cs.com/">Keith Murphy</a> and his hard-working crew have released the spring 2008 issue of <a href="http://www.paragon-cs.com/mag/">MySQL Magazine</a>.  Go take a look &#8212; it includes quite a few articles on various topics, even a mention of our upcoming book (<a href="http://www.amazon.com/gp/product/0596101716?ie=UTF8&#038;tag=xaprb-20&#038;link_code=as3&#038;camp=211189&#038;creative=373489&#038;creativeASIN=0596101716">High Performance MySQL, Second Edition</a>).</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2011/08/28/subscribe-to-oracle-magazine/' rel='bookmark' title='Permanent Link: Subscribe to Oracle Magazine'>Subscribe to Oracle Magazine</a></li>
<li><a href='http://www.xaprb.com/blog/2007/10/05/how-to-get-your-session-accepted-to-mysql-conference-2008/' rel='bookmark' title='Permanent Link: How to get your session accepted to MySQL Conference 2008'>How to get your session accepted to MySQL Conference 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2008/01/25/my-presentations-at-the-2008-mysql-conference-and-expo/' rel='bookmark' title='Permanent Link: My presentations at the 2008 MySQL Conference and Expo'>My presentations at the 2008 MySQL Conference and Expo</a></li>
<li><a href='http://www.xaprb.com/blog/2008/05/02/come-to-becamp-2008/' rel='bookmark' title='Permanent Link: Come to beCamp 2008'>Come to beCamp 2008</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/17/mysql-conference-and-expo-2008-day-two/' rel='bookmark' title='Permanent Link: MySQL Conference and Expo 2008, Day Two'>MySQL Conference and Expo 2008, Day Two</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/04/19/spring-2008-issue-of-mysql-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kickfire: stream-processing SQL queries</title>
		<link>http://www.xaprb.com/blog/2008/04/04/kickfire-stream-processing-sql-queries/</link>
		<comments>http://www.xaprb.com/blog/2008/04/04/kickfire-stream-processing-sql-queries/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 13:01:01 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[caching]]></category>
		<category><![CDATA[Cg]]></category>
		<category><![CDATA[column store]]></category>
		<category><![CDATA[CPUs]]></category>
		<category><![CDATA[data warehousing]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[Keith Murphy]]></category>
		<category><![CDATA[Kickfire]]></category>
		<category><![CDATA[MPP]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqluc2008]]></category>
		<category><![CDATA[pluggable storage engine]]></category>
		<category><![CDATA[QPU]]></category>
		<category><![CDATA[Von Neumann bottleneck]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/2008/04/04/kickfire-stream-processing-sql-queries/</guid>
		<description><![CDATA[Some of you have noticed Kickfire, a new sponsor at this year&#8217;s MySQL Conference and Expo. Like Keith Murphy, I have been involved with them for a while now. This article explains the basics of how their technology is different from the current state of the art in complex queries on large amounts of data. [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2008/04/14/kickfire-relational-algebra-in-a-chip/' rel='bookmark' title='Permanent Link: Kickfire: relational algebra in a chip'>Kickfire: relational algebra in a chip</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/09/kickfire-is-not-ssd-based/' rel='bookmark' title='Permanent Link: Kickfire is not SSD-based'>Kickfire is not SSD-based</a></li>
<li><a href='http://www.xaprb.com/blog/2009/08/18/how-to-find-un-indexed-queries-in-mysql-without-using-the-log/' rel='bookmark' title='Permanent Link: How to find un-indexed queries in MySQL, without using the log'>How to find un-indexed queries in MySQL, without using the log</a></li>
<li><a href='http://www.xaprb.com/blog/2009/12/31/a-simple-way-to-make-birthday-queries-easier-and-faster/' rel='bookmark' title='Permanent Link: A simple way to make birthday queries easier and faster'>A simple way to make birthday queries easier and faster</a></li>
<li><a href='http://www.xaprb.com/blog/2009/11/01/catching-erroneous-queries-without-mysql-proxy/' rel='bookmark' title='Permanent Link: Catching erroneous queries, without MySQL proxy'>Catching erroneous queries, without MySQL proxy</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Some of you have noticed <a href="http://www.kickfire.com/">Kickfire</a>, a
new sponsor at this year&#8217;s <a href="http://www.mysqlconf.com/">MySQL Conference and
Expo</a>.  Like <a href="http://www.paragon-cs.com/wordpress/?p=132">Keith
Murphy</a>, I have been involved with them for a while now.  This article
explains the basics of how their technology is different from the current state
of the art in complex queries on large amounts of data.</p>

<p>Kickfire is developing a MySQL appliance that combines a pluggable
storage engine (for MySQL 5.1) with a new kind of chip.  On the surface, the
storage engine is not that revolutionary: it is a column-store engine with data
compression and some other techniques to reduce disk I/O, which is kind of par
for the course in data warehousing today.  The chip is the
really exciting part of the technology.</p>

<p>The simplest description of their chip is that it runs SQL natively.</p>

<p>OK, but now you need to do something: <em>get &#8220;SQL chip&#8221; out of your mind</em>.  It
doesn&#8217;t work the way you think it does, and your pre-conceived ideas may prevent
you from understanding how different this really is.  (Everyone says their
technology is a paradigm shift, so I expect you to be numb to this phrase.)</p>

<p>I can&#8217;t explain all of the technology in this post,
partially because of NDA, but I want to prepare you for when you do hear the
details.  If you&#8217;re like me, you&#8217;ll miss a lot of stuff because you have tunnel
vision, and then you&#8217;ll say &#8220;wait, I get it now!  Can you please repeat
everything you&#8217;ve been saying for the last hour so I can think about it all over
again?&#8221;</p>

<h3>An important note</h3>

<p><strong>Very important:</strong> I have not seen this technology, tasted it,
smelled it, or benchmarked it.  This information is based on discussions with
their engineering and other staff.  I will not pretend
to know anything I don&#8217;t. I will be spending two days in the lab with the engineers next
week, and then I will be able to write in greater detail with more 
confidence.</p>

<h3>How your computer currently works</h3>

<p>To understand how Kickfire&#8217;s chip works, you need to understand something you
probably take for granted: how most chips work.  Most computers today use the
same architecture they always have: there&#8217;s data that is held in the CPU, and
data that is not.  The CPU has registers, which hold a miniscule bit of data &#8211;
the data it is currently working with.  When the CPU processes an instruction
that asks for some more data it doesn&#8217;t have, the CPU has to go fetch it.  In
the meantime, the instruction can&#8217;t complete.</p>

<p>As you might imagine, this is not terribly efficient.  Fetching data that&#8217;s
not in the CPU can take hundreds of CPU cycles (or more).  To work around this,
computer architects have developed a hierarchy of caches: the on-chip cache, the
main memory, and the hard drive, to name a few.  The caches make it faster to
get data when it&#8217;s not already on hand.  And modern chips have a pipeline, too.
The pipeline looks at the instructions as they flow towards the CPU, tries to
predict which data they&#8217;re going to need, then pre-fetches it.</p>

<p>In the best case, this works okay.  Not always &#8212; for example, the Pentium 4
has a very long pipeline, so the cost of a wrong branch prediction is very high.
Another case is when you simply need a lot of data, such as tens of gigabytes.
Suppose for your 10GB operation, you&#8217;re only going to look at each byte once (a
common occurrence in data warehousing queries).  This renders your caches
useless, because caches work on the principle that you&#8217;re likely to look at
recently accessed data again soon.</p>

<p>In these cases, the speed of the computation is constrained by the <a
href="http://en.wikipedia.org/wiki/Von_Neumann_architecture">Von Neumann
bottleneck</a>: the inefficient fetch-compute-wait cycle of constantly
going to the memory (or disk) for more data, a teeny bit at a time.  Remember,
even in-memory data is very slow compared to data that&#8217;s in the registers.
Having a lot of fast memory is not a <strong>solution</strong> to the Von
Neumann bottleneck.  It&#8217;s a <strong>workaround</strong> to reduce the cost.</p>

<h3>Kickfire&#8217;s architecture</h3>

<p>Kickfire is designed to work well where today&#8217;s general-purpose computing
architectures run queries slowly because they&#8217;re sitting on their thumbs much of
the time.  Think data warehousing: complex queries with lots of data.</p>

<p>What is the industry&#8217;s answer to this?  So-called massively
parallel processing, or MPP.  Current MPP data-warehousing solutions are special-purpose
database software that runs queries on dozens or hundreds of CPUs, which occupy
a lot of storage space and require lots of power, hardware, and
cooling.  &#8220;If you throw enough Von Neumann machines at the problem
simultaneously, they can answer your questions faster,&#8221; or so the thinking goes.
In other words, the current state of the art is to arrange conventional
computers in new ways.</p>

<p>Kickfire takes the opposite approach: <em>stream processing</em>.  This is a
fundamentally different computing architecture.  Stream processing is to Von
Neumann machines as LISP is to C.</p>

<p>For those of you who aren&#8217;t LISP programmers, here&#8217;s another analogy: In
stream processing, you take a bunch of data and you shove it through the chip
without stopping.  Rather than the chip asking for data from the storage
subsystem as needed, the data actually gets pushed at the chip.  That is, it&#8217;s
push-processing instead of the conventional pull-processing.</p>

<p>Conventional processing is like trying to fill your bathtub
from the sink with a paper cup.  Stream processing is like putting your tub
under the sink and opening the drain.</p>

<p>I&#8217;m taking some liberties here, to illustrate the differences.  As I said, I
haven&#8217;t seen the wiring diagrams of the Kickfire chip.  But hopefully you get
the concept.</p>

<p>This is not a new idea.  If you&#8217;ve worked with modern graphics cards, you&#8217;ve
seen this in action.  Programming languages like <a
href="http://en.wikipedia.org/wiki/Cg_%28programming_language%29">Cg</a> express
the stream-processing concepts elegantly.  If you&#8217;ve ever been in a classroom
full of C++ programmers trying to learn Cg, you&#8217;ve seen how hard it is to grasp
this different approach.  Essentially, graphics programming on one of these
chips is a series of transformations, not a series of instructions.  You input
some vertexes at one end of the processor, and you tell the chip to do some
matrix multiplies and so on.  Out pops the result at the other end.</p>

<p>If this doesn&#8217;t sound much different from instructions&#8230; well, meditate on
it.  It&#8217;s like an assembly line, but nobody leaves their station along the
conveyor belt.  In a traditional CPU, the &#8220;person&#8221; at the conveyor
<em>constantly</em> leaves to go get the materials he needs.</p>

<p>Kickfire runs in commodity hardware, and it is just one or two servers, not
racks full.  Like many other systems designed for large amounts of data, it uses
a column data store.  Unlike many other systems, it uses an industry standard
interconnect and a custom pluggable MySQL storage engine.</p>

<h3>What took so long?</h3>

<p>Stream processing is the obvious way to run SQL queries.  Some readers may
never have thought about it this way, but my guess is that a lot of you already
think of SQL in a stream-processing way, even though you might know that
computers today really implement it in conventional ways.  I have always tried
to think of it this way, and I <a
href="http://www.xaprb.com/blog/2005/10/03/understanding-sql-joins/">always try
to explain SQL as a stream</a>, too.</p>

<p>So when I was on a call with the Kickfire engineers and it finally sunk in, I
felt really silly.  Why didn&#8217;t I think of that?  It&#8217;s so obvious.</p>

<p>But then again, most breakthroughs are really obvious in hindsight.</p>

<h3>Performance</h3>

<p>I have seen initial benchmark results, but I&#8217;m under NDA about them.  I can&#8217;t
say any more yet.  And I haven&#8217;t run any benchmarks myself yet, nor have I had
access to the hardware.  So this is all theoretical until I get my hands on the
system.  Caveat emptor, your mileage may vary, etc etc.</p>

<p>One thing I&#8217;m interested in is how well the system performs for general-purpose
queries.  When you take it away from complex queries on lots of data, does it still have
an advantage?  I&#8217;ll be trying to get an answer to that question next week.</p>

<h3>About Kickfire</h3>

<p>They are still in stealth mode and my NDA prevents me from being able to
tell you a lot or answer all your questions yet.  But someday they will no
longer be in stealth mode, and you&#8217;ll find out everything you want to then.</p>

<p>Hint: they are going to be giving a <a
href="http://en.oreilly.com/mysql2008/public/schedule/detail/3286">keynote
address</a> on their technology, but there&#8217;s not much detail in the description.
Come to the keynote and find out.</p>

<h3>Why am I writing this?</h3>

<p>Well, they promised me chocolate&#8230;</p>

<p>Seriously: I do have an agenda, but there are actually several motivations
here.  The first is that they initially contacted me because of my involvement
with the MySQL community.  Of course they&#8217;re hoping to gain publicity through
me, but they also wanted to let the community have some input.  I&#8217;ve been sort
of a secret liason for you, representing your interests to Kickfire.  I&#8217;ve
advocated pretty strongly for certain things I&#8217;ll go into in a later post.</p>

<p>The other reason I&#8217;m working with them is that I&#8217;m excited about their
technology, even though I don&#8217;t have hard evidence about their claims and
benchmarks yet.  If what they&#8217;re saying is true, their product will be very good
for the environment.  It will let people save a lot of energy (power, cooling,
the need to build data centers) and it will help avoid the need to build a bunch
of servers.  Computers are extremely
toxic to manufacture.</p>

<p>I&#8217;m also interested in seeing them succeed because I anticipate that even if
this product isn&#8217;t what it claims to be, they&#8217;ll prove the concept and there
will be a competitive rush into this space.  That is guaranteed to produce a lot
of changes in how people build computers, probably in more areas than just data
warehousing.  So I&#8217;m happy that they&#8217;re starting this, because others will
finish it whether they do or not.  And that&#8217;s good news for the environment,
too.</p>

<p>Stay tuned.  More details are forthcoming.</p>

<p>PS: if you have questions you&#8217;d like me to look into while I&#8217;m onsite with the engineers, feel free to post them in the comments.  But I probably can&#8217;t answer them yet.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2008/04/14/kickfire-relational-algebra-in-a-chip/' rel='bookmark' title='Permanent Link: Kickfire: relational algebra in a chip'>Kickfire: relational algebra in a chip</a></li>
<li><a href='http://www.xaprb.com/blog/2008/04/09/kickfire-is-not-ssd-based/' rel='bookmark' title='Permanent Link: Kickfire is not SSD-based'>Kickfire is not SSD-based</a></li>
<li><a href='http://www.xaprb.com/blog/2009/08/18/how-to-find-un-indexed-queries-in-mysql-without-using-the-log/' rel='bookmark' title='Permanent Link: How to find un-indexed queries in MySQL, without using the log'>How to find un-indexed queries in MySQL, without using the log</a></li>
<li><a href='http://www.xaprb.com/blog/2009/12/31/a-simple-way-to-make-birthday-queries-easier-and-faster/' rel='bookmark' title='Permanent Link: A simple way to make birthday queries easier and faster'>A simple way to make birthday queries easier and faster</a></li>
<li><a href='http://www.xaprb.com/blog/2009/11/01/catching-erroneous-queries-without-mysql-proxy/' rel='bookmark' title='Permanent Link: Catching erroneous queries, without MySQL proxy'>Catching erroneous queries, without MySQL proxy</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2008/04/04/kickfire-stream-processing-sql-queries/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
	</channel>
</rss>

