<?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; TokuDB</title>
	<atom:link href="http://www.xaprb.com/blog/tag/tokudb/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xaprb.com/blog</link>
	<description>Stay curious!</description>
	<lastBuildDate>Wed, 08 Feb 2012 03:13:07 +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>Extended covering indexes</title>
		<link>http://www.xaprb.com/blog/2009/06/07/extended-covering-indexes/</link>
		<comments>http://www.xaprb.com/blog/2009/06/07/extended-covering-indexes/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 19:15:10 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Clustered indexes]]></category>
		<category><![CDATA[Covering indexes]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[TokuDB]]></category>
		<category><![CDATA[Tokutek]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1124</guid>
		<description><![CDATA[As you can probably guess, I&#8217;m catching up on reading my blogs. I&#8217;ve just read with interest about TokuDB&#8217;s multiple clustering indexes. It&#8217;s kind of an obvious thought, once someone has pointed it out to you. I&#8217;ve only been around products that insist there can be Only One clustered index (and then there&#8217;s ScaleDB, who [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2006/07/27/why-does-innodb-create-two-indexes-per-foreign-key/' rel='bookmark' title='Permanent Link: Why does InnoDB create two indexes per foreign key?'>Why does InnoDB create two indexes per foreign key?</a></li>
<li><a href='http://www.xaprb.com/blog/2006/08/28/how-to-find-duplicate-and-redundant-indexes-in-mysql/' rel='bookmark' title='Permanent Link: How to find duplicate and redundant indexes in MySQL'>How to find duplicate and redundant indexes in MySQL</a></li>
<li><a href='http://www.xaprb.com/blog/2005/12/08/sp_showdoc/' rel='bookmark' title='Permanent Link: How to use extended properties as documentation with sp_showdoc'>How to use extended properties as documentation with sp_showdoc</a></li>
<li><a href='http://www.xaprb.com/blog/2009/04/11/formatting-mysqladmin-extended-status-nicely/' rel='bookmark' title='Permanent Link: Formatting mysqladmin extended-status nicely'>Formatting mysqladmin extended-status nicely</a></li>
<li><a href='http://www.xaprb.com/blog/2006/05/10/when-to-avoid-and-when-to-use-surrogate-keys-in-innodb-tables/' rel='bookmark' title='Permanent Link: When to use surrogate keys in InnoDB tables'>When to use surrogate keys in InnoDB tables</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>As you can probably guess, I&#8217;m catching up on reading my blogs.  I&#8217;ve just read with interest about <a href="http://tokutek.com/category/tokuview/introducing_multiple_clustering_indexes/">TokuDB&#8217;s multiple clustering indexes</a>.  It&#8217;s kind of an obvious thought, once someone has pointed it out to you.  I&#8217;ve only been around products that insist there can be Only One clustered index (and then there&#8217;s <a href="http://www.scaledb.com/">ScaleDB</a>, who say &#8220;think differently already&#8221;).</p>

<p>Anyway, we already know that there are quite a few database products that use clustered indexes and to avoid update overhead, require every non-clustered index to store the clustered key as the &#8220;pointer&#8221; for row lookups.  Thus there are &#8220;hidden columns&#8221; which are present at the leaf nodes, but not the non-leaf nodes, of secondary indexes.  Why not take that idea and run with it a little?  Here&#8217;s what I mean:</p>

<pre>
create table test (
  a int,
  b int,
  c int,
  primary key(a),
  key(b) <strong>plus(c)</strong>
);
</pre>

<p>This would index column b, which because of the clustered primary key would contain column a at the leaf nodes; and additionally we&#8217;ve requested for it to store column c.  And then we would be able to do this:</p>

<pre>
explain select c from test where b = 1\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: test
         type: ref
possible_keys: b
          key: b
      key_len: 5
          ref: const
         rows: 1
        Extra: Using index
</pre>

<p>The &#8220;Using index&#8221; is the key to note there.  (Yes, I invented that EXPLAIN result; it is not possible to get with current MySQL and current storage engines.)  This strikes me as an improvement over TokuDB, which apparently says you can have all or none.  Why not let people say which columns they want?</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2006/07/27/why-does-innodb-create-two-indexes-per-foreign-key/' rel='bookmark' title='Permanent Link: Why does InnoDB create two indexes per foreign key?'>Why does InnoDB create two indexes per foreign key?</a></li>
<li><a href='http://www.xaprb.com/blog/2006/08/28/how-to-find-duplicate-and-redundant-indexes-in-mysql/' rel='bookmark' title='Permanent Link: How to find duplicate and redundant indexes in MySQL'>How to find duplicate and redundant indexes in MySQL</a></li>
<li><a href='http://www.xaprb.com/blog/2005/12/08/sp_showdoc/' rel='bookmark' title='Permanent Link: How to use extended properties as documentation with sp_showdoc'>How to use extended properties as documentation with sp_showdoc</a></li>
<li><a href='http://www.xaprb.com/blog/2009/04/11/formatting-mysqladmin-extended-status-nicely/' rel='bookmark' title='Permanent Link: Formatting mysqladmin extended-status nicely'>Formatting mysqladmin extended-status nicely</a></li>
<li><a href='http://www.xaprb.com/blog/2006/05/10/when-to-avoid-and-when-to-use-surrogate-keys-in-innodb-tables/' rel='bookmark' title='Permanent Link: When to use surrogate keys in InnoDB tables'>When to use surrogate keys in InnoDB tables</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/06/07/extended-covering-indexes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The cache-oblivious algorithms inside Tokutek&#8217;s TokuDB</title>
		<link>http://www.xaprb.com/blog/2009/06/07/the-cache-oblivious-algorithms-inside-tokuteks-tokudb/</link>
		<comments>http://www.xaprb.com/blog/2009/06/07/the-cache-oblivious-algorithms-inside-tokuteks-tokudb/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 19:02:12 +0000</pubDate>
		<dc:creator>Xaprb</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[TokuDB]]></category>
		<category><![CDATA[Tokutek]]></category>

		<guid isPermaLink="false">http://www.xaprb.com/blog/?p=1120</guid>
		<description><![CDATA[Tokutek have said they are working towards explaining their indexing algorithms. I spoke to some of the Tokutek people over the last 14 months or so about this, although I didn&#8217;t really start to pay attention until the beginning of the year. While Vadim, Peter and I were writing our blog post on TokuDB, I [...]


<strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2007/03/30/comparison-of-table-sync-algorithms/' rel='bookmark' title='Permanent Link: Comparison of table sync algorithms'>Comparison of table sync algorithms</a></li>
<li><a href='http://www.xaprb.com/blog/2010/09/15/making-query-cache-contention-more-obvious/' rel='bookmark' title='Permanent Link: Making query cache contention more obvious'>Making query cache contention more obvious</a></li>
<li><a href='http://www.xaprb.com/blog/2009/06/07/extended-covering-indexes/' rel='bookmark' title='Permanent Link: Extended covering indexes'>Extended covering indexes</a></li>
<li><a href='http://www.xaprb.com/blog/2011/03/28/breaking-news-mysql-saves-baby-seals/' rel='bookmark' title='Permanent Link: Breaking news: MySQL saves baby seals'>Breaking news: MySQL saves baby seals</a></li>
<li><a href='http://www.xaprb.com/blog/2008/06/24/percona-wants-to-hire-a-maatkit-developer/' rel='bookmark' title='Permanent Link: Percona wants to hire a Maatkit developer'>Percona wants to hire a Maatkit developer</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tokutek.com/">Tokutek</a> have said they are working towards explaining their indexing algorithms.  I spoke to some of the Tokutek people over the last 14 months or so about this, although I didn&#8217;t really start to pay attention until the beginning of the year.  While Vadim, Peter and I were writing <a href="http://www.mysqlperformanceblog.com/2009/04/28/detailed-review-of-tokutek-storage-engine/">our blog post on TokuDB</a>, I asked them to provide scholarly references, and they did, but warned me it would be dense reading, in part because it&#8217;s so academic.  Mark Callaghan also told me he had gotten them to walk him through the math behind their indexing algorithm and found it hard.</p>

<p>Here&#8217;s a blog post with <a href="http://tokutek.com/category/tokuview/publications_related_to_fractal_tree_indexing/">links to the research behind their work</a>.  I&#8217;m happy to say that after working through one of the papers at a superficial level, I agree &#8212; it&#8217;s pretty dense, though I think the concepts can be made understandable to mortals.  It took me an hour and a half, but I didn&#8217;t take the time to convince myself of the validity of the proofs; that would probably take a long time.  Moreover, I think these papers only describe parts of the foundation, not the actual implementation.  I look forward to the layman&#8217;s version, which I&#8217;m sure will be more accessible to Bears of Very Small Brain like myself.</p>

<p>Disclaimer: I work for Percona, and Percona was paid to do some benchmarking and analysis for Tokutek.  However, I am not paid to say this: I think TokuDB is one of the more interesting technologies I&#8217;ve seen in a while.  By that, I mean it&#8217;s actually something new, a real advancement in applied computer science.  Not just the same old B-Trees with a different twist of lemon.</p>

<p><strong>Further Reading:</strong><ul><li><a href='http://www.xaprb.com/blog/2007/03/30/comparison-of-table-sync-algorithms/' rel='bookmark' title='Permanent Link: Comparison of table sync algorithms'>Comparison of table sync algorithms</a></li>
<li><a href='http://www.xaprb.com/blog/2010/09/15/making-query-cache-contention-more-obvious/' rel='bookmark' title='Permanent Link: Making query cache contention more obvious'>Making query cache contention more obvious</a></li>
<li><a href='http://www.xaprb.com/blog/2009/06/07/extended-covering-indexes/' rel='bookmark' title='Permanent Link: Extended covering indexes'>Extended covering indexes</a></li>
<li><a href='http://www.xaprb.com/blog/2011/03/28/breaking-news-mysql-saves-baby-seals/' rel='bookmark' title='Permanent Link: Breaking news: MySQL saves baby seals'>Breaking news: MySQL saves baby seals</a></li>
<li><a href='http://www.xaprb.com/blog/2008/06/24/percona-wants-to-hire-a-maatkit-developer/' rel='bookmark' title='Permanent Link: Percona wants to hire a Maatkit developer'>Percona wants to hire a Maatkit developer</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://www.xaprb.com/blog/2009/06/07/the-cache-oblivious-algorithms-inside-tokuteks-tokudb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

