<?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>PlanetMysql.ru - информация о СУБД MySQL &#187; memcached</title>
	<atom:link href="http://planetmysql.ru/category/memcached/feed/" rel="self" type="application/rss+xml" />
	<link>http://planetmysql.ru</link>
	<description>Блог о самой популярной СУБД MySQL</description>
	<lastBuildDate>Thu, 24 May 2012 22:24:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Guide to MySQL &amp; NoSQL, Webinar Q&amp;A</title>
		<link>https://blogs.oracle.com/MySQL/entry/guide_to_mysql_nosql_webinar?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=guide-to-mysql-nosql-webinar-qa</link>
		<comments>https://blogs.oracle.com/MySQL/entry/guide_to_mysql_nosql_webinar#comments</comments>
		<pubDate>Fri, 30 Mar 2012 10:47:11 +0000</pubDate>
		<dc:creator>MySQL Community</dc:creator>
				<category><![CDATA[api]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">https://blogs.oracle.com/MySQL/entry/guide_to_mysql_nosql_webinar</guid>
		<description><![CDATA[Yesterday we ran a webinar discussing the
demands of next generation web services and how blending the best of relational
and NoSQL technologies enables developers and architects to deliver the
agility, performance and availability needed to be successful. 
    
  Attendees posted a number of great
questions to the MySQL developers, serving to&#160;provide additional insights into areas like auto-sharding and cross-shard JOINs,
replication, performance, client libraries, etc. So I thought it would be useful to post those
below, for the benefit of those unable to attend the webinar. 
    
  Before getting to the Q&#38;A, there are a
couple of other resources that maybe useful to those looking at NoSQL
capabilities within MySQL: 
  - On-Demand webinar (coming
soon!) 
  - Slides used during the webinar  
  -  Guide to MySQL and NoSQL
whitepaper&#160; 
  - MySQL Cluster demo, including
NoSQL interfaces, auto-sharing, high availability, etc.&#160; 
    
  So here is the Q&#38;A from the event&#160; 
    
  Q.
Where does MySQL Cluster fit in to the CAP theorem? 
  A. MySQL Cluster is flexible. A single
Cluster will prefer consistency over availability in the presence of network
partitions. A pair of Clusters can be configured to prefer availability over
consistency. A full explanation can be found on the MySQL Cluster &#38; CAP Theorem blog post.&#160; 
    
  Q.
Can you configure the number of replicas? (the slide used a replication factor
of 1)  
  Yes. A cluster is configured by an .ini
file. The option NoOfReplicas sets the number of originals and replicas: 1 = no
data redundancy, 2 = one copy etc. Usually there's no benefit in setting it
&#62;2. 
  Q. Interestingly most (if not all) of the NoSQL databases recommend having 3 copies of data (the replication factor).&#160;&#160;&#160; 
  Yes, with configurable quorum based Reads and writes. MySQL Cluster does not need a quorum of replicas online to provide service. Systems that require a quorum need &#62; 2 replicas to be able to tolerate a single failure. Additionally, many NoSQL systems take liberal inspiration from the original GFS paper which described a 3 replica configuration. MySQL Cluster avoids the need for a quorum by using a lightweight arbitrator. You can configure more than 2 replicas, but this is a tradeoff between incrementally improved availability, and linearly increased cost.  
     
  Q.
Can you have cross node group JOINS? Wouldn't that run into the risk of
flooding the network?  
  MySQL Cluster 7.2 supports cross nodegroup
joins. A full cross-join can require a large amount of data transfer, which may
bottleneck on network bandwidth. However, for more selective joins, typically
seen with OLTP and light analytic applications, cross node-group joins give a
great performance boost and network bandwidth saving over having the MySQL
Server perform the join. 
    
  Q.
Are the details of the benchmark available anywhere? According to my
calculations it results in approx. 350k ops/sec per processor which is the
largest number I've seen lately  
  The details are linked from Mikael
Ronstrom's blog  
  The benchmark uses a benchmarking tool we
call flexAsynch which runs parallel asynchronous transactions. It involved 100
byte reads, of 25 columns each. Regarding the per-processor ops/s, MySQL
Cluster is particularly efficient in terms of throughput/node. It uses
lock-free minimal copy message passing internally, and maximizes ID cache
reuse. Note also that these are in-memory tables, there is no need to read
anything from disk. 
    
  Q. Is
access control (like table) planned to be supported for NoSQL access mode?  
  Currently we have not seen much need for
full SQL-like access control (which has always been overkill for web apps and
telco apps). So we have no plans, though especially with memcached it is
certainly possible to turn-on connection-level access control. But specifically
table level controls are not planned. 
  Q. How
is the performance of memcached APi with MySQL against memcached+MySQL or any
other Object Cache like Ecache with MySQL DB? 
  With the memcache API we generally see a
memcached response in less than 1 ms. and a small cluster with one memcached
server can handle tens of thousands of operations per second. 
    
  Q.
Can .NET can access MemcachedAPI?  
  Yes, just use a .Net memcache client such
as the enyim or BeIT memcache libraries. 
    
  Q. Is
the row level locking applicable when you update a column through memcached API?  
  An update that comes through memcached uses
a row lock and then releases it immediately. Memcached operations like
&#34;INCREMENT&#34; are actually pushed down to the data nodes. In most cases
the locks are not even held long enough for a network round trip. 
    
  Q. Has
anyone published an example using something like PHP?  I am assuming that you just use the PHP
memcached extension to hook into the memcached API. Is that correct?  
  Not that I'm aware of but absolutely you
can use it with php or any of the other drivers 
    
  Q. For
beginner we need more examples.  
  Take a look here for a fully worked example 
    
  Q. Can I access MySQL using Cobol (Open Cobol) or C and if so where can I find the coding libraries etc? 
  A. There is a cobol implementation that works well with MySQL, but I do not think it is Open Cobol. Also there is a MySQL C client library that is a standard part of every mysql distribution  
    
  Q. Is
there a place to go to find help when testing and/implementing the NoSQL
access?  
  If using Cluster then you can use the
cluster@lists.mysql.com alias or post on the MySQL Cluster forum  
    
  Q. Are there any white papers on this?&#160; 
  Yes - there is more detail in the MySQL Guide to NoSQL whitepaper  
    
  If you have further questions, please don’t
hesitate to use the comments below!]]></description>
			<content:encoded><![CDATA[<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>959</o:Words>
  <o:Characters>5469</o:Characters>
  <o:Company>Homework</o:Company>
  <o:Lines>45</o:Lines>
  <o:Paragraphs>12</o:Paragraphs>
  <o:CharactersWithSpaces>6416</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--> <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInval>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--> <!--[if gte mso 10]>

<![endif]--> <!--StartFragment--> 
  <p><span lang="EN-US">Yesterday we ran a webinar discussing the
demands of next generation web services and how blending the best of relational
and NoSQL technologies enables developers and architects to deliver the
agility, performance and availability needed to be successful.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><span lang="EN-US">Attendees posted a number of great
questions to the MySQL developers, serving to&nbsp;provide additional insights into areas like auto-sharding and cross-shard JOINs,
replication, performance, client libraries, etc. So I thought it would be useful to post those
below, for the benefit of those unable to attend the webinar.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><span lang="EN-US">Before getting to the Q&amp;A, there are a
couple of other resources that maybe useful to those looking at NoSQL
capabilities within MySQL:<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US">-<span> </span></span><!--[endif]--><span lang="EN-US">On-Demand webinar (coming
soon!)<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US">-<span> </span></span><!--[endif]--><span lang="EN-US"><a href="http://www.slideshare.net/matkeep/nosql-and-mysql-webinar-best-of-both-worlds">Slides used during the webinar </a><o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US">-<span> <a href="http://mysql.com/why-mysql/white-papers/mysql-wp-guide-to-nosql.php"> </a></span></span><!--[endif]--><span lang="EN-US"><a href="http://mysql.com/why-mysql/white-papers/mysql-wp-guide-to-nosql.php">Guide to MySQL and NoSQL
whitepaper&nbsp;</a><o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US">-<span> </span></span><!--[endif]--><span lang="EN-US"><a href="http://www.oracle.com/pls/ebn/swf_viewer.load?p_shows_id=11464419">MySQL Cluster demo</a>, including
NoSQL interfaces, auto-sharing, high availability, etc.&nbsp;<o:p /></span></p> 
  <p> </p> 
  <p><span lang="EN-US">So here is the Q&amp;A from the event&nbsp;</span></p> 
  <p> </p> 
  <p><b><span lang="EN-US">Q.
Where does MySQL Cluster fit in to the CAP theorem?<o:p /></span></b></p> 
  <p><span lang="EN-US">A. MySQL Cluster is flexible. A single
Cluster will prefer consistency over availability in the presence of network
partitions. A pair of Clusters can be configured to prefer availability over
consistency. A full explanation can be found on the <a href="http://messagepassing.blogspot.co.uk/2012/03/cap-theorem-and-mysql-cluster.html">MySQL Cluster &amp; CAP Theorem blog post.&nbsp;</a><o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q.
Can you configure the number of replicas? (the slide used a replication factor
of 1) <o:p /></span></b></p> 
  <p><span lang="EN-US">Yes. A cluster is configured by an .ini
file. The option NoOfReplicas sets the number of originals and replicas: 1 = no
data redundancy, 2 = one copy etc. Usually there's no benefit in setting it
&gt;2.</span></p> 
  <p><b><span lang="EN-US">Q. Interestingly most (if not all) of the NoSQL databases recommend having 3 copies of data (the replication factor).&nbsp;&nbsp;&nbsp;<o:p /></span></b></p> 
  <p><span lang="EN-US">Yes, with configurable quorum based Reads and writes. MySQL Cluster does not need a quorum of replicas online to provide service. Systems that require a quorum need &gt; 2 replicas to be able to tolerate a single failure. Additionally, many NoSQL systems take liberal inspiration from the original GFS paper which described a 3 replica configuration. MySQL Cluster avoids the need for a quorum by using a lightweight arbitrator. You can configure more than 2 replicas, but this is a tradeoff between incrementally improved availability, and linearly increased cost.</span> </p> 
  <p><span lang="EN-US"> </span> </p> 
  <p><b><span lang="EN-US">Q.
Can you have cross node group JOINS? Wouldn't that run into the risk of
flooding the network? <o:p /></span></b></p> 
  <p><span lang="EN-US">MySQL Cluster 7.2 supports cross nodegroup
joins. A full cross-join can require a large amount of data transfer, which may
bottleneck on network bandwidth. However, for more selective joins, typically
seen with OLTP and light analytic applications, cross node-group joins give a
great performance boost and network bandwidth saving over having the MySQL
Server perform the join.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q.
Are the details of the benchmark available anywhere? According to my
calculations it results in approx. 350k ops/sec per processor which is the
largest number I've seen lately <o:p /></span></b></p> 
  <p><span lang="EN-US">The details are linked from <a href="http://mikaelronstrom.blogspot.co.uk/2012/02/105bn-qpm-using-mysql-cluster-72.html">Mikael
Ronstrom's blog</a> <o:p /></span></p> 
  <p><span lang="EN-US">The benchmark uses a benchmarking tool we
call flexAsynch which runs parallel asynchronous transactions. It involved 100
byte reads, of 25 columns each. Regarding the per-processor ops/s, MySQL
Cluster is particularly efficient in terms of throughput/node. It uses
lock-free minimal copy message passing internally, and maximizes ID cache
reuse. Note also that these are in-memory tables, there is no need to read
anything from disk.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q. Is
access control (like table) planned to be supported for NoSQL access mode?</span></b><span lang="EN-US"> <o:p /></span></p> 
  <p><span lang="EN-US">Currently we have not seen much need for
full SQL-like access control (which has always been overkill for web apps and
telco apps). So we have no plans, though especially with memcached it is
certainly possible to turn-on connection-level access control. But specifically
table level controls are not planned.</span></p> 
  <p><b><span lang="EN-US">Q. How
is the performance of memcached APi with MySQL against memcached+MySQL or any
other Object Cache like Ecache with MySQL DB?<o:p /></span></b></p> 
  <p><span lang="EN-US">With the memcache API we generally see a
memcached response in less than 1 ms. and a small cluster with one memcached
server can handle tens of thousands of operations per second.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q.
Can .NET can access MemcachedAPI? <o:p /></span></b></p> 
  <p><span lang="EN-US">Yes, just use a .Net memcache client such
as the enyim or BeIT memcache libraries.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q. Is
the row level locking applicable when you update a column through memcached API? <o:p /></span></b></p> 
  <p><span lang="EN-US">An update that comes through memcached uses
a row lock and then releases it immediately. Memcached operations like
&quot;INCREMENT&quot; are actually pushed down to the data nodes. In most cases
the locks are not even held long enough for a network round trip.<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q. Has
anyone published an example using something like PHP?  I am assuming that you just use the PHP
memcached extension to hook into the memcached API. Is that correct? <o:p /></span></b></p> 
  <p><span lang="EN-US">Not that I'm aware of but absolutely you
can use it with php or any of the other drivers<o:p /></span></p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q. For
beginner we need more examples. <o:p /></span></b></p> 
  <p><span lang="EN-US">Take a look <a href="http://clusterdb.com/u/memcached">here</a> for a fully worked example</span></p> 
  <p> </p> 
  <p><b><span lang="EN-US">Q. Can I access MySQL using Cobol (Open Cobol) or C and if so where can I find the coding libraries etc?<o:p /></span></b></p> 
  <p><span lang="EN-US">A. There is a cobol implementation that works well with MySQL, but I do not think it is Open Cobol. Also there is a MySQL C client library that is a standard part of every mysql distribution</span> </p> 
  <p><span lang="EN-US"> </span></p> 
  <p><b><span lang="EN-US">Q. Is
there a place to go to find help when testing and/implementing the NoSQL
access? <o:p /></span></b></p> 
  <p><span lang="EN-US">If using Cluster then you can use the
cluster@lists.mysql.com alias or post on the <a href="http://forums.mysql.com/list.php?25">MySQL Cluster forum </a><o:p /></span></p> 
  <p> </p> 
  <p><b><span lang="EN-US">Q. Are there any white papers on this?&nbsp;<o:p /></span></b></p> 
  <p>Yes - there is more detail in the <a href="http://mysql.com/why-mysql/white-papers/mysql-wp-guide-to-nosql.php">MySQL Guide to NoSQL whitepaper</a> </p> 
  <p> </p> 
  <p><span lang="EN-US">If you have further questions, please don’t
hesitate to use the comments below!<o:p /></span></p> <!--EndFragment--><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32636&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32636&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2012/03/30/guide-to-mysql-nosql-webinar-qa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A super-set of MySQL for Big Data. Interview with John Busch, Schooner.</title>
		<link>http://www.odbms.org/blog/2012/02/a-super-set-of-mysql-for-big-data-interview-with-dr-john-busch-schooner/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-super-set-of-mysql-for-big-data-interview-with-john-busch-schooner</link>
		<comments>http://www.odbms.org/blog/2012/02/a-super-set-of-mysql-for-big-data-interview-with-dr-john-busch-schooner/#comments</comments>
		<pubDate>Mon, 20 Feb 2012 09:28:27 +0000</pubDate>
		<dc:creator>Roberto V. Zicari</dc:creator>
				<category><![CDATA[Apache Hadoop]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[John Busch]]></category>
		<category><![CDATA[MapReduce]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[nosql databases]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[Schooner]]></category>
		<category><![CDATA[Schooner Information Technology]]></category>
		<category><![CDATA[SchoonerSQL]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[VoltDB]]></category>

		<guid isPermaLink="false">http://www.odbms.org/blog/?p=1333</guid>
		<description><![CDATA[“Legacy MySQL does not scale well on a single node, which forces granular sharding and explicit application code changes to make them sharding-aware and results in low utilization of severs”&#8211; Dr. John Busch, Schooner Information Technology A super-set of MySQL suitable for Big Data? On this subject, I have interviewed Dr. John Busch, Founder, Chairman, [...]]]></description>
			<content:encoded><![CDATA[“Legacy MySQL does not scale well on a single node, which forces granular sharding and explicit application code changes to make them sharding-aware and results in low utilization of severs”&#8211; Dr. John Busch, Schooner Information Technology A super-set of MySQL suitable for Big Data? On this subject, I have interviewed Dr. John Busch, Founder, Chairman, [...]<br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32063&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32063&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2012/02/20/a-super-set-of-mysql-for-big-data-interview-with-john-busch-schooner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open APIs are the new open source</title>
		<link>http://feedproxy.google.com/~r/451opensource/~3/FPJywMpWMi8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=open-apis-are-the-new-open-source</link>
		<comments>http://feedproxy.google.com/~r/451opensource/~3/FPJywMpWMi8/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 18:08:58 +0000</pubDate>
		<dc:creator>The 451 Group</dc:creator>
				<category><![CDATA[451 group]]></category>
		<category><![CDATA[451caostheory]]></category>
		<category><![CDATA[451group]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[Amazon Web Services]]></category>
		<category><![CDATA[apis]]></category>
		<category><![CDATA[application programming interfaces]]></category>
		<category><![CDATA[caostheory]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[developers]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[IT operations]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jay lyman]]></category>
		<category><![CDATA[jaylyman]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[LinuxInsider]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[MySQL and PostgreSQL]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blogs.the451group.com/opensource/?p=5933</guid>
		<description><![CDATA[We&#8217;ve seen the rise of open source software in the enterprise and also beyond the IT industry, but the real keys to openness and its advantages in today&#8217;s technology world &#8212; where efficient use of cloud computing and supporting services are paramount &#8212; exist in open application programming interfaces, or APIs.
Open source software continues to be a critical part of software development, systems administration, IT operations and more, but much of the action in leveraging modern cloud computing and services-based infrastructures centers on APIs. Open APIs are the new open source.
Read the full story at LinuxInsider.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve seen the rise of open source software in the enterprise and also beyond the IT industry, but the real keys to openness and its advantages in today&#8217;s technology world &#8212; where efficient use of cloud computing and supporting services are paramount &#8212; exist in open application programming interfaces, or APIs.</p>
<p>Open source software continues to be a critical part of software development, systems administration, IT operations and more, but much of the action in leveraging modern cloud computing and services-based infrastructures centers on APIs. Open APIs are the new open source.</p>
<p>Read the <a href="http://www.linuxinsider.com/story/Open-APIs-Are-the-New-Open-Source-74419.html">full story</a> at LinuxInsider.</p>
<img src="http://feeds.feedburner.com/~r/451opensource/~4/FPJywMpWMi8" height="1" width="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32000&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=32000&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2012/02/14/open-apis-are-the-new-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[RELOADED] Vote for MySQL+ community awards 2011 !</title>
		<link>http://feedproxy.google.com/~r/mysqlplusrss/~3/85PRjYkfCIM/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reloaded-vote-for-mysql-community-awards-2011</link>
		<comments>http://feedproxy.google.com/~r/mysqlplusrss/~3/85PRjYkfCIM/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 20:31:42 +0000</pubDate>
		<dc:creator>Cedric PEINTRE</dc:creator>
				<category><![CDATA[admin]]></category>
		<category><![CDATA[cacti]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[cold backup]]></category>
		<category><![CDATA[Common schema]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[drbd]]></category>
		<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[FromDual]]></category>
		<category><![CDATA[Galera Replication]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[infinidb]]></category>
		<category><![CDATA[Innotop]]></category>
		<category><![CDATA[Live !]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[MariaDB]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[MHA]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[MONyog]]></category>
		<category><![CDATA[mycheckpoint]]></category>
		<category><![CDATA[mydumper]]></category>
		<category><![CDATA[mylvmbackup]]></category>
		<category><![CDATA[MyS]]></category>
		<category><![CDATA[MySQL Enterprise Backup]]></category>
		<category><![CDATA[MySQL Enterprise Monitor]]></category>

		<guid isPermaLink="false">http://www.mysqlplus.net/?p=242</guid>
		<description><![CDATA[[UPDATE 2011/01/11] : New poll added, vote for the best GUI client tool ! (And continue to vote for other polls)
And thanks again for your involvement. It&#8217;s time to vote again&#8230; 
First of all, I wish you a happy new year.
Many things happened last year, it was really exciting to be involved in the MySQL ecosystem.
I hope this enthusiasm will be increased this year, up to you !
To start the year, I propose the MySQL+ Community Awards 2011
It will only take 5 minutes to fill out these polls.
Answer with your heart first and then with your experience with some of these tools or services.
Polls will be closed January 31, so, vote now !
For &#8220;other&#8221; answers, please,  let me a comment with details.
Don&#8217;t hesitate to submit proposal for tools or services in the comments.
And, please, share these polls !
&#160;
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
Happy 2012 !
Cédric
This article is obviously not sponsored !
(MySQL is a trademark of Oracle Corporation and/or its affiliates)
Sources :

Oracle products, tools and services : http://www.mysql.com
SkySQL products, tools and services : http://www.skysql.com
Percona products, tools and services : http://www.percona.com
FromDual products, tools and services : http://www.fromdual.com
PalominoDB products, tools and services : http://palominodb.com/
Pythian products, tools and services : http://www.pythian.com/
Blue Gecko products, tools and services : http://www.bluegecko.net/
Zabbix : http://www.zabbix.com/
MySQL Cacti templates : http://code.google.com/p/mysql-cacti-templates/
Nagios : http://www.nagios.org/
r1soft CDP for MySQL : http://www.r1soft.com/linux-cdp/cdp-enterprise-edition/mysql/ 
mylvmbackup tool : http://www.lenzg.net/mylvmbackup/
mydumper tool : http://www.mydumper.org/
ZRM tools : http://www.zmanda.com
Galera replication : http://codership.com/products/galera_replication
Tungsten replicator : http://code.google.com/p/tungsten-replicator/
DRBD : http://www.drbd.org/
ShoonerSQL : http://www.schoonerinfotech.com/products/schoonersql
ScaleBase : http://www.scalebase.com/
common-schema : http://code.google.com/p/common-schema/
innotop : http://code.google.com/p/innotop/
MySQL Tuner : https://launchpad.net/mysqltuner/2.0/mysqltuner-2.1-rev17
mycheckpoint : http://code.openark.org/forge/mycheckpoint
MariaDB : http://mariadb.org/
TokuDB : http://www.tokutek.com/
InfiniDB : http://infinidb.org/
Drizzle : https://launchpad.net/drizzle
Amazon SimpleDB : http://aws.amazon.com/fr/simpledb//180-2635771-0721067/
mongoDB : http://www.mongodb.org/
Cassandra : http://cassandra.apache.org/
CouchDB : http://couchdb.apache.org/
Tokyo Cabinet : http://fallabs.com/
Riak : http://basho.com/
Hadoop : http://hadoop.apache.org/
Tarantool : http://tarantool.org/
memcached : http://memcached.org/
MySQL Sandbox : http://mysqlsandbox.net/
openark kit : http://code.openark.org/forge/openark-kit
Redis : http://redis.io/
Ganglia : http://ganglia.sourceforge.net/
HandlerSocket : https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

Related Posts :Why a new memory engine may change everything ?Words about PLUK2011Monitoring your monitoring tools (MONyog inside) ![UPDATED] Why you should go to Percona Live (London) ?Does mpstat can replace vmstat ?]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.mysqlplus.net/wp-content/uploads/2012/01/award.jpg" rel="lightbox[242]"><img class="alignleft size-full wp-image-274" title="award" src="http://www.mysqlplus.net/wp-content/uploads/2012/01/award.jpg" alt="" width="162" height="257" /></a></p>
<p><em><strong>[UPDATE 2011/01/11]</strong> : New poll added, vote for the best GUI client tool ! (And continue to vote for other polls)</em><br />
<em>And thanks again for your involvement. It&#8217;s time to vote again&#8230; </em></p>
<p>First of all, <strong>I wish you a happy new year</strong>.<br />
Many things happened last year, it was really exciting to be involved in the MySQL ecosystem.<br />
I hope this enthusiasm will be increased this year, up to you !</p>
<p>To start the year, I propose the <strong><em>MySQL+ Community Awards 2011</em></strong><br />
It will only take <strong>5 minutes</strong> to fill out these polls.<br />
Answer with your heart first and then with your experience with some of these tools or services.</p>
<p><strong>Polls will be closed January 31</strong>, so, vote now !<br />
For &#8220;<em>other</em>&#8221; answers, please,  let me a comment with details.</p>
<p>Don&#8217;t hesitate to submit proposal for tools or services in the comments.<br />
And, please, share these polls !</p>
<p>&nbsp;</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.<br />
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>Happy 2012 !<br />
Cédric</p>
<p><strong>This article is obviously not sponsored !</strong><br />
<em>(MySQL is a trademark of Oracle Corporation and/or its affiliates)</em></p>
<p><span>Sources :</span></p>
<ul>
<li>Oracle products, tools and services : <a href="http://www.mysql.com" >http://www.mysql.com</a></li>
<li>SkySQL products, tools and services : <a href="http://www.skysql.com" >http://www.skysql.com</a></li>
<li>Percona products, tools and services : <a href="http://www.percona.com" >http://www.percona.com</a></li>
<li>FromDual products, tools and services : <a href="http://www.fromdual.com" >http://www.fromdual.com</a></li>
<li>PalominoDB products, tools and services : <a href="http://palominodb.com/" >http://palominodb.com/</a></li>
<li>Pythian products, tools and services : <a href="http://www.pythian.com/" >http://www.pythian.com/</a></li>
<li>Blue Gecko products, tools and services : <a href="http://www.bluegecko.net/" >http://www.bluegecko.net/</a></li>
<li>Zabbix : <a href="http://www.zabbix.com/" >http://www.zabbix.com/</a></li>
<li>MySQL Cacti templates : <a href="http://code.google.com/p/mysql-cacti-templates/" >http://code.google.com/p/mysql-cacti-templates/</a></li>
<li>Nagios : <a href="http://www.nagios.org/" >http://www.nagios.org/</a></li>
<li>r1soft CDP for MySQL : <a href="http://www.r1soft.com/linux-cdp/cdp-enterprise-edition/mysql/" >http://www.r1soft.com/linux-cdp/cdp-enterprise-edition/mysql/ </a></li>
<li>mylvmbackup tool : <a href="http://www.lenzg.net/mylvmbackup/" >http://www.lenzg.net/mylvmbackup/</a></li>
<li>mydumper tool : <a href="http://www.mydumper.org/" >http://www.mydumper.org/</a></li>
<li>ZRM tools : <a href="http://www.zmanda.com" >http://www.zmanda.com</a></li>
<li>Galera replication : <a href="http://codership.com/products/galera_replication" >http://codership.com/products/galera_replication</a></li>
<li>Tungsten replicator : <a href="http://code.google.com/p/tungsten-replicator/" >http://code.google.com/p/tungsten-replicator/</a></li>
<li>DRBD : <a href="http://www.drbd.org/" >http://www.drbd.org/</a></li>
<li>ShoonerSQL : <a href="http://www.schoonerinfotech.com/products/schoonersql" >http://www.schoonerinfotech.com/products/schoonersql</a></li>
<li>ScaleBase : <a href="http://www.scalebase.com/" >http://www.scalebase.com/</a></li>
<li>common-schema : <a href="http://code.google.com/p/common-schema/" >http://code.google.com/p/common-schema/</a></li>
<li>innotop : <a href="http://code.google.com/p/innotop/" >http://code.google.com/p/innotop/</a></li>
<li>MySQL Tuner : <a href="https://launchpad.net/mysqltuner/2.0/mysqltuner-2.1-rev17" >https://launchpad.net/mysqltuner/2.0/mysqltuner-2.1-rev17</a></li>
<li>mycheckpoint : <a href="http://code.openark.org/forge/mycheckpoint" >http://code.openark.org/forge/mycheckpoint</a></li>
<li>MariaDB : <a href="http://mariadb.org/" >http://mariadb.org/</a></li>
<li>TokuDB : <a href="http://www.tokutek.com/" >http://www.tokutek.com/</a></li>
<li>InfiniDB : <a href="http://infinidb.org/" >http://infinidb.org/</a></li>
<li>Drizzle : <a href="https://launchpad.net/drizzle" >https://launchpad.net/drizzle</a></li>
<li>Amazon SimpleDB : <a href="http://aws.amazon.com/fr/simpledb//180-2635771-0721067/" >http://aws.amazon.com/fr/simpledb//180-2635771-0721067/</a></li>
<li>mongoDB : <a href="http://www.mongodb.org/" >http://www.mongodb.org/</a></li>
<li>Cassandra : <a href="http://cassandra.apache.org/" >http://cassandra.apache.org/</a></li>
<li>CouchDB : <a href="http://couchdb.apache.org/" >http://couchdb.apache.org/</a></li>
<li>Tokyo Cabinet : <a href="http://fallabs.com/" >http://fallabs.com/</a></li>
<li>Riak : <a href="http://basho.com/" >http://basho.com/</a></li>
<li>Hadoop : <a href="http://hadoop.apache.org/" >http://hadoop.apache.org/</a></li>
<li>Tarantool : <a href="http://tarantool.org/" >http://tarantool.org/</a></li>
<li>memcached : <a href="http://memcached.org/" >http://memcached.org/</a></li>
<li>MySQL Sandbox : <a href="http://mysqlsandbox.net/" >http://mysqlsandbox.net/</a></li>
<li>openark kit : <a href="http://code.openark.org/forge/openark-kit" >http://code.openark.org/forge/openark-kit</a></li>
<li>Redis : <a href="http://redis.io/" >http://redis.io/</a></li>
<li>Ganglia : <a href="http://ganglia.sourceforge.net/" >http://ganglia.sourceforge.net/</a></li>
<li>HandlerSocket : <a href="https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL" >https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL</a></li>
</ul>
<div><B><U>Related Posts :</U></B><ul><li><a href="http://www.mysqlplus.net/2011/09/26/memory-engine-change/" rel="bookmark">Why a new <I>memory</I> engine may change everything ?</a></li><li><a href="http://www.mysqlplus.net/2011/10/28/words-pluk2011/" rel="bookmark">Words about PLUK2011</a></li><li><a href="http://www.mysqlplus.net/2011/12/02/monitoring-monitoring-tools-monyog-inside/" rel="bookmark">Monitoring your monitoring tools (MONyog inside) !</a></li><li><a href="http://www.mysqlplus.net/2011/09/22/percona-live/" rel="bookmark">[UPDATED] Why you should go to Percona Live (London) ?</a></li><li><a href="http://www.mysqlplus.net/2011/07/06/mpstat-replace-vmstat/" rel="bookmark">Does <i>mpstat</i> can replace <i>vmstat</i> ?</a></li></ul></div><div>
<a href="http://feeds.feedburner.com/~ff/mysqlplusrss?a=85PRjYkfCIM:VfxG9oKLf8I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/mysqlplusrss?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/mysqlplusrss?a=85PRjYkfCIM:VfxG9oKLf8I:-BTjWOF_DHI"><img src="http://feeds.feedburner.com/~ff/mysqlplusrss?i=85PRjYkfCIM:VfxG9oKLf8I:-BTjWOF_DHI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/mysqlplusrss?a=85PRjYkfCIM:VfxG9oKLf8I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/mysqlplusrss?i=85PRjYkfCIM:VfxG9oKLf8I:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/mysqlplusrss?a=85PRjYkfCIM:VfxG9oKLf8I:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/mysqlplusrss?d=qj6IDK7rITs" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/mysqlplusrss/~4/85PRjYkfCIM" height="1" width="1" /><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31501&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=31501&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2012/01/05/reloaded-vote-for-mysql-community-awards-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>High Performance PHP Session Storage on Scale</title>
		<link>http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=high-performance-php-session-storage-on-scale</link>
		<comments>http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html#comments</comments>
		<pubDate>Thu, 17 Nov 2011 15:34:00 +0000</pubDate>
		<dc:creator>Johannes Schl&#252;ter</dc:creator>
				<category><![CDATA[memcache]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php session]]></category>
		<category><![CDATA[scalability]]></category>

		<guid isPermaLink="false">http://schlueters.de/blog/archives/164-guid.html</guid>
		<description><![CDATA[One of the great things about the HTTP protocol, besides status code 418, is that it's stateless. A web server therefore is not required to store any information on the user or allocate resources for a user after the individual request is done. By that a single web server can handle many many many different users easily, and well if it can't anymore one can add a new server, put a simple load balancer in front and scale out. Each of those web servers then handles its requests without the need for communication which leads to linear scaling (assuming network provides enough bandwidth etc.). 
Now the Web isn't used for serving static documents only anymore but we have all these fancy web apps. And those applications often have the need for a state. The most trivial information they need is the current user. HTTP is a great protocol and provides a way to do authentication which works well with its stateless nature - unfortunately this authentication is implemented badly in current clients. Ugly popups, no logout button, ... I don't have to tell more I think. For having nicer login systems people want web forms. Now the stateless nature of HTTP is a problem: The user may login and then browse around. On later requests it should still be known who that user is - with a custom HTML form based login alone this is not possible. A solution might be cookies. At least one might think so for a second. But setting a cookie &#34;this is an authorized user&#34; alone doesn't make sense as it could easily be faked. Better is to simply store a random identifier in a cookie and then keep a state information on the server. Then all session data is protected and only the user who knows this random identifier is authenticated. If this identifier is wisely chosen and hard to guess this works quite well. Luckily this is a mostly PHP- and MySQL-focused blog and as PHP is a system for building web applications this functionality is part of the core language: The PHP session module. 
The session module, which was introduced in PHP 4, partly based on work on the famous phplib library, is quite a fascinating piece of code. It is open and extendable in so many directions but still so simple to use that everybody uses it, often newcomers learn about it on their first day in PHP land. Of course you can not only store the information whether the user is logged in but cache some user-specific data or keep the state on some transactions by the user, like multi-page forms or such. 
In its default configuration session state will be stored on the web server's file system. Each session's data in its own file in serialized form. If the filesystem does some caching or one uses a ramdisk or something this can be quite efficient. But as we suddenly have a state on the web server we can't scale as easily as before anymore: If we add a new server and then route a user with an existing session to the new server all the session data won't be there. That is bad. This is often solved by a configuration of the load balancer to route all requests from the same user to the same web server. In some cases this works quite ok, but it is often seen that this might cause problems. Let's assume you want to take a machine down for maintenance. All sessions there will die. Or imagine there's a bunch of users who do complex and expensive tasks - then one of your servers will have a hard time, giving these users bad response times which feels like bad service, even though your other systems are mostly idle. 
A nice solution for this would be to store the sessions in a central repository which can be accessed from all web servers. Continue reading "High Performance PHP Session Storage on Scale"]]></description>
			<content:encoded><![CDATA[<p>One of the great things about the HTTP protocol, besides <a href="http://tools.ietf.org/html/rfc2324">status code 418</a>, is that it's stateless. A web server therefore is not required to store any information on the user or allocate resources for a user after the individual request is done. By that a single web server can handle many many many different users easily, and well if it can't anymore one can add a new server, put a simple load balancer in front and scale out. Each of those web servers then handles its requests without the need for communication which leads to linear scaling (assuming network provides enough bandwidth etc.).</p> 
<p>Now the Web isn't used for serving static documents only anymore but we have all these fancy web apps. And those applications often have the need for a state. The most trivial information they need is the current user. HTTP is a great protocol and provides a way to do authentication which works well with its stateless nature - unfortunately this authentication is implemented badly in current clients. Ugly popups, no logout button, ... I don't have to tell more I think. For having nicer login systems people want web forms. Now the stateless nature of HTTP is a problem: The user may login and then browse around. On later requests it should still be known who that user is - with a custom HTML form based login alone this is not possible. A solution might be cookies. At least one might think so for a second. But setting a cookie &quot;this is an authorized user&quot; alone doesn't make sense as it could easily be faked. Better is to simply store a random identifier in a cookie and then keep a state information on the server. Then all session data is protected and only the user who knows this random identifier is authenticated. If this identifier is wisely chosen and hard to guess this works quite well. Luckily this is a mostly PHP- and MySQL-focused blog and as PHP is a system for building web applications this functionality is part of the core language: The <a href="http://php.net/session">PHP session module</a>.</p> 
<p>The session module, which was introduced in PHP 4, partly based on work on the famous phplib library, is quite a fascinating piece of code. It is open and extendable in so many directions but still so simple to use that everybody uses it, often newcomers learn about it on their first day in PHP land. Of course you can not only store the information whether the user is logged in but cache some user-specific data or keep the state on some transactions by the user, like multi-page forms or such.<br /></p> 
<p>In its default configuration session state will be stored on the web server's file system. Each session's data in its own file in serialized form. If the filesystem does some caching or one uses a ramdisk or something this can be quite efficient. But as we suddenly have a state on the web server we can't scale as easily as before anymore: If we add a new server and then route a user with an existing session to the new server all the session data won't be there. That is bad. This is often solved by a configuration of the load balancer to route all requests from the same user to the same web server. In some cases this works quite ok, but it is often seen that this might cause problems. Let's assume you want to take a machine down for maintenance. All sessions there will die. Or imagine there's a bunch of users who do complex and expensive tasks - then one of your servers will have a hard time, giving these users bad response times which feels like bad service, even though your other systems are mostly idle.</p> 
<p>A nice solution for this would be to store the sessions in a central repository which can be accessed from all web servers.</p> <br /><a href="http://schlueters.de/blog/archives/164-High-Performance-PHP-Session-Storage-on-Scale.html#extended">Continue reading "High Performance PHP Session Storage on Scale"</a><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30959&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30959&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/11/17/high-performance-php-session-storage-on-scale/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL Cluster 7.2 (DMR2): NoSQL, Key/Value, Memcached</title>
		<link>http://blogs.oracle.com/MySQL/entry/mysql_cluster_7_2_dmr2?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-cluster-7-2-dmr2-nosql-keyvalue-memcached-2</link>
		<comments>http://blogs.oracle.com/MySQL/entry/mysql_cluster_7_2_dmr2#comments</comments>
		<pubDate>Fri, 07 Oct 2011 05:27:03 +0000</pubDate>
		<dc:creator>MySQL Community</dc:creator>
				<category><![CDATA[auto-sharding]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">http://blogs.oracle.com/MySQL/entry/mysql_cluster_7_2_dmr2</guid>
		<description><![CDATA[70x Higher Performance, Cross Data
Center Scalability and New NoSQL Interface 
  Its
been an exciting week for all involved with MySQL Cluster, with the
announcement of the second Development Milestone Release (7.2.1) at Oracle Open
World. Highlights include: 
  - Enabling next generation
web services: 70x higher complex query performance, native memcached API and
integration with the latest MySQL 5.5 server 
  - Enhancing cross data
scalability: new multi-site clustering and enhanced active/active replication 
  - Simplified provisioning: consolidated user
privileges. 
  You can download the DMR for evaluation now from: http://dev.mysql.com/downloads/cluster/&#160;(select Development Milestone Release tab). 
   
    You
can also read up on the detail of each of these features in the new article posted
at the MySQL Developer Zone. In this blog, I’ll summarize the main
parts of the announcement. 
      
   
  70x Higher Performance with
Adaptive Query Localization (AQL) 
  Previewed as part of the first MySQL Cluster DMR,
AQL is
enabled by a new Index Statistics function that allows the SQL optimizer to
build a better execution plan for each query. 
    
    
  As a result, JOIN operations are pushed
down to the data nodes where the query
executes in parallel on local copies of the data. A merged result set is then
sent back to the MySQL Server, significantly enhancing performance by reducing
network trips. 
    
    
  Take a look at how this is used by a
web-based content management to increase performance by 70x 
    
    
  Adaptive Query Localization enables MySQL
Cluster to better serve those use-cases that have the need to run real-time
analytics across live data sets, along with high throughput OLTP operations.
Examples include recommendations engines and clickstream analysis in web
applications, pre-pay billing promotions in mobile telecoms networks or fraud
detection in payment systems. 
    
    
    
  New NoSQL Interface and
Schema-less Storage with the memcached API 
  The memcached interface released as an Early Access project with the first
MySQL Cluster DMR is now integrated directly into the MySQL Cluster 7.2.1
trunk, enabling simpler evaluation. 
  The
popularity of Key/Value stores has increased dramatically. With MySQL Cluster and the new memcached API,
you have all the benefits of an ACID RDBMS, combined with the performance
capabilities of Key/Value store. 
  By
default, every Key / Value is written to the same table with each Key / Value
pair stored in a single row – thus allowing schema-less data storage.
Alternatively, the developer can define a key-prefix so that each value is
linked to a pre-defined column in a specific table. 
  Of course if the application needs to access the same data through SQL
then developers can map key prefixes to existing table columns, enabling Memcached access
to schema-structured data already stored in MySQL Cluster.  
  You
can read more about the design goals and implementation of the memcached API
for MySQL Cluster here. 
    
    
  Integration with MySQL 5.5 
  MySQL
Cluster 7.2.1 is integrated with MySQL Server 5.5, providing binary
compatibility to existing MySQL Server deployments. Users can now fully exploit
the latest capabilities of both the InnoDB and MySQL Cluster storage engines
within a single application.  
  Users
simply install the new MySQL Cluster binary including the MySQL 5.5 release,
restart the server and immediate have access to both InnoDB and MySQL Cluster! 
    
    
  Enhancing Cross Data Center
Scalability: Simplified Active / Active Replication 
  MySQL Cluster has long offered Geographic Replication, distributing clusters
to remote data centers to reduce the affects of geographic latency by pushing
data closer to the user, as well as providing a capability for disaster
recovery.  
  Geographic replication has always been designed around an Active /
Active technology, so if applications are attempting to update the same row on
different clusters at the same time, the conflict can be detected and
resolved. With the release of MySQL Cluster
7.2.1, implementing Active / Active replication has become a whole lot
simpler. Developers no longer need to
implement and manage timestamp columns within their applications. Also
rollbacks can be made to whole transactions rather than just individual
operations. 
    
  You can learn more here.  
    
    
  Enhancing Cross Data Center
Scalability: Multi-Site Clustering 
  MySQL Cluster 7.2.1 DMR provides a new option for cross data center
scalability – multi-site clustering. For
the first time splitting data nodes across data centers is a supported
deployment option.  
  Improvements to MySQL Cluster’s heartbeating mechanism with a new “ConnectivityCheckPeriod”
parameter enables greater resilience to temporary latency spikes on a WAN,
thereby maintaining operation of the cluster.   
  With this deployment model, users can synchronously replicate updates
between data centers without needing conflict detection and resolution, and
automatically failover between those sites in the event of a node failure.   
  Users
need to characterize their network bandwidth and latencies, and observe best
practices in configuring both their network environment and Cluster. More
guidance is available here. 
    
    
  User
Privilege Consolidation 
  User
privilege tables are now consolidated into the data nodes and centrally
accessible by all MySQL servers accessing the cluster.  
  Previously the privilege tables were local to each MySQL server, meaning
users and their associated privileges had to be managed separately on each
server. By consolidating privilege data, users need only be defined once and
managed centrally, saving Systems Administrators significant effort and
reducing cost of operations. 
    
    
  Summary 
  The MySQL Cluster 7.2.1 DMR enables new classes of use-cases to benefit
from web-scale performance with carrier-grade availability.  
  You can download the DMR for evaluation now from:&#160;http://dev.mysql.com/downloads/cluster/&#160;(select
Development Milestone Release tab). 
  You can learn more about the MySQL Cluster architecture from our Guide
to scaling web databases.&#160;  
  Let us know what you think of these enhancements directly in comments of
this or the associated blogs. We look forward to working with the community to
perfect these new features.]]></description>
			<content:encoded><![CDATA[<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>977</o:Words>
  <o:Characters>5569</o:Characters>
  <o:Company>Homework</o:Company>
  <o:Lines>46</o:Lines>
  <o:Paragraphs>13</o:Paragraphs>
  <o:CharactersWithSpaces>6533</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--> <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInval>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--> <!--[if gte mso 10]>

<![endif]--> <!--StartFragment--> 
  <p><b><span lang="EN-US">70x Higher Performance, Cross Data
Center Scalability and New NoSQL Interface</span></b></p> 
  <p><span lang="EN-US">Its
been an exciting week for all involved with MySQL Cluster, with the
announcement of the <a href="http://dev.mysql.com/tech-resources/articles/mysql-cluster-7.2.html">second Development Milestone Release (7.2.1)</a> at Oracle Open
World.<span> </span>Highlights include:</span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US"><span>-<span> </span></span></span><!--[endif]--><b><span lang="EN-US">Enabling next generation
web services:</span></b><span lang="EN-US"> 70x higher complex query performance, native memcached API and
integration with the latest MySQL 5.5 server<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US"><span>-<span> </span></span></span><!--[endif]--><b><span lang="EN-US">Enhancing cross data
scalability:</span></b><span lang="EN-US"> new multi-site clustering and enhanced active/active replication<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN-US"><span>-<span> </span></span></span><!--[endif]--><b><span lang="EN-US">Simplified provisioning:</span></b><span lang="EN-US"> consolidated user
privileges.</span></p> 
  <p><span>You can download the DMR for evaluation now from:</span><span> <a href="http://dev.mysql.com/downloads/cluster/">http://dev.mysql.com/downloads/cluster/</a>&nbsp;(select Development Milestone Release tab).</span></p> 
  <div> 
    <p><span>You
can also read up on the detail of each of these features in the new article posted
at the <a href="http://dev.mysql.com/tech-resources/articles/mysql-cluster-7.2.html">MySQL Developer Zone</a>. In this blog, I’ll summarize the main
parts of the announcement.</span></p> 
    <p> </p> 
  </div> 
  <p><b><span>70x Higher Performance with
Adaptive Query Localization (AQL)<o:p /></span></b></p> 
  <p><span>Previewed as part of the <a href="http://dev.mysql.com/tech-resources/articles/mysql-cluster-labs-dev-milestone-release.html">first MySQL Cluster DMR</a>,
</span><span>AQL is
enabled by a new Index Statistics function that allows the SQL optimizer to
build a better execution plan for each query.</span></p> 
  <p> </p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> 
  <p><span lang="EN-US">As a result, JOIN operations are pushed
down to the data nodes </span><span>where the query
executes in parallel on local copies of the data. A merged result set is then
sent back to the MySQL Server, significantly enhancing performance by reducing
network trips.</span></p> 
  <p> </p> 
  <p><span><o:p> </o:p></span></p> 
  <p><span><a href="http://www.clusterdb.com/mysql-cluster/70x-faster-joins-with-aql-in-mysql-cluster-7-2-dmr/">Take a look</a> at how this is used by a
web-based content management to increase performance by 70x</span></p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> 
  <p> </p> 
  <p><span>Adaptive Query Localization enables MySQL
Cluster to better serve those use-cases that have the need to run real-time
analytics across live data sets, along with high throughput OLTP operations.
Examples include recommendations engines and clickstream analysis in web
applications, pre-pay billing promotions in mobile telecoms networks or fraud
detection in payment systems.</span></p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>New NoSQL Interface and
Schema-less Storage with the memcached API<o:p /></span></b></p> 
  <p><span>The memcached interface released as an Early Access project with the first
MySQL Cluster DMR is now integrated directly into the MySQL Cluster 7.2.1
trunk, enabling simpler evaluation.</span></p> 
  <p><span lang="EN-US">The
popularity of Key/Value stores has increased dramatically.<span> </span>With MySQL Cluster and the new memcached API,
you have all the benefits of an ACID RDBMS, combined with the performance
capabilities of Key/Value store.</span></p> 
  <p><span lang="EN-US">By
default, every Key / Value is written to the same table with each Key / Value
pair stored in a single row – thus allowing schema-less data storage.
Alternatively, the developer can define a key-prefix so that each value is
linked to a pre-defined column in a specific table.</span></p> 
  <p><span>Of course if the application needs to access the same data through SQL
then developers can map key prefixes to existing table columns, </span><span lang="EN-US">enabling Memcached access
to schema-structured data already stored in MySQL Cluster.</span><span> </span></p> 
  <p><span lang="EN-US">You
can read more about the design goals and implementation of the memcached API
for MySQL Cluster <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/">here.</a></span></p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>Integration with MySQL 5.5<o:p /></span></b></p> 
  <p><span lang="EN-US">MySQL
Cluster 7.2.1 is integrated with MySQL Server 5.5, providing binary
compatibility to existing MySQL Server deployments. Users can now fully exploit
the latest capabilities of both the InnoDB and MySQL Cluster storage engines
within a single application.<span> </span></span></p> 
  <p><span lang="EN-US">Users
simply install the new MySQL Cluster binary including the MySQL 5.5 release,
restart the server and immediate have access to both InnoDB and MySQL Cluster!</span></p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>Enhancing Cross Data Center
Scalability: Simplified Active / Active Replication<o:p /></span></b></p> 
  <p><span>MySQL Cluster has long offered Geographic Replication, distributing clusters
to remote data centers to reduce the affects of geographic latency by pushing
data closer to the user, as well as providing a capability for disaster
recovery.</span><span> </span></p> 
  <p><span>Geographic replication has always been designed around an Active /
Active technology, so if applications are attempting to update the same row on
different clusters at the same time, the conflict can be detected and
resolved.<span> </span>With the release of MySQL Cluster
7.2.1, implementing Active / Active replication has become a whole lot
simpler.<span> </span>Developers no longer need to
implement and manage timestamp columns within their applications. Also
rollbacks can be made to whole transactions rather than just individual
operations.</span></p> 
  <p> </p> 
  <p>You can learn more <a href="http://messagepassing.blogspot.com/2011/10/eventual-consistency-with-mysql.html">here.</a> </p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>Enhancing Cross Data Center
Scalability: Multi-Site Clustering<o:p /></span></b></p> 
  <p><span>MySQL Cluster 7.2.1 DMR provides a new option for cross data center
scalability – multi-site clustering.<span> </span>For
the first time splitting data nodes across data centers is a supported
deployment option.</span><span> </span></p> 
  <p><span>Improvements to MySQL Cluster’s heartbeating mechanism with a new “</span><span lang="EN-US">ConnectivityCheckPeriod”
parameter</span><span> enables greater resilience to temporary latency spikes on a WAN,
thereby maintaining operation of the cluster.<span> </span></span><span> </span></p> 
  <p><span>With this deployment model, users can synchronously replicate updates
between data centers without needing conflict detection and resolution, and
automatically failover between those sites in the event of a node failure.<span> </span></span><span> </span></p> 
  <p><span lang="EN-US">Users
need to characterize their network bandwidth and latencies, and observe best
practices in configuring both their network environment and Cluster. More
guidance is available <a href="http://blogs.oracle.com/MySQL/entry/synchronously_replicating_databases_across_data">here.</a></span></p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>User
Privilege Consolidation<o:p /></span></b></p> 
  <p><span lang="EN-US">User
privilege tables are now consolidated into the data nodes and centrally
accessible by all MySQL servers accessing the cluster.</span><span> </span></p> 
  <p><span>Previously the privilege tables were local to each MySQL server, meaning
users and their associated privileges had to be managed separately on each
server. By consolidating privilege data, users need only be defined once and
managed centrally, saving Systems Administrators significant effort and
reducing cost of operations.</span></p> 
  <p> </p> 
  <p> </p> 
  <p><b><span>Summary<o:p /></span></b></p> 
  <p><span>The MySQL Cluster 7.2.1 DMR enables new classes of use-cases to benefit
from web-scale performance with carrier-grade availability.</span><span> </span></p> 
  <p><span>You can download the DMR for evaluation now from:&nbsp;</span><span><a href="http://dev.mysql.com/downloads/cluster/">http://dev.mysql.com/downloads/cluster/</a>&nbsp;(select
Development Milestone Release tab).</span></p> 
  <p><span>You can learn more about the MySQL Cluster architecture from our <a href="http://mysql.com/why-mysql/white-papers/mysql_wp_scaling_web_databases.php">Guide
to scaling web databases</a>.&nbsp;</span><span> </span></p> 
  <p><span>Let us know what you think of these enhancements directly in comments of
this or the associated blogs. We look forward to working with the community to
perfect these new features.<o:p /></span></p> 
  <p><span><o:p> </o:p></span></p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> 
  <p><span lang="EN-US"><o:p> </o:p></span></p> <!--EndFragment--><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30235&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=30235&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/10/07/mysql-cluster-7-2-dmr2-nosql-keyvalue-memcached-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scaling Web Databases, Part 3: SQL &amp; NoSQL Data Access</title>
		<link>http://blogs.oracle.com/MySQL/entry/scaling_web_databases_part_3?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scaling-web-databases-part-3-sql-nosql-data-access</link>
		<comments>http://blogs.oracle.com/MySQL/entry/scaling_web_databases_part_3#comments</comments>
		<pubDate>Fri, 05 Aug 2011 10:16:08 +0000</pubDate>
		<dc:creator>Oracle MySQL Group</dc:creator>
				<category><![CDATA[Cluster]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[not-only-sql]]></category>
		<category><![CDATA[scaling]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://blogs.oracle.com/MySQL/entry/scaling_web_databases_part_3</guid>
		<description><![CDATA[Supporting successful services on the web means scaling your back-end databases across multiple dimensions. This blog focuses on scaling access methods to your data using SQL and/or NoSQL interfaces. 
    
  In Part 1 of
the blog series ,
I discussed scaling database performance using auto-sharding and
active/active geographic replication in MySQL Cluster to enable applications to
scale both within and across data centers. &#160; 
  In
Part 2,
I discussed the need to scale operational agility to keep pace with demand, which includes being able to add capacity and performance to the database, and
to evolve the schema – all without downtime. 
  So
in this blog I want to explore another dimension to scalability - &#160;how multiple interfaces can be
used to scale access to the database, enabling users to simultaneously serve
multiple applications, each with distinct access requirements. 
  Data
Access Interfaces to MySQL Cluster 
  MySQL Cluster automatically shards tables across pools of commodity data nodes, rather than store those tables in a single MySQL Server. It is therefore able to present multiple interfaces to the database, giving developers a
choice between: 
    
  - S &#160; &#160;- &#160;SQL for complex reporting-type queries; 
  - S &#160; &#160;- &#160;Simple Key/Value interfaces bypassing the SQL layer
for blazing fast reads &#38; writes; 
  - S &#160; &#160;- &#160;Real-time interfaces for micro-second latency, again bypassing the SQL layer 
    
    
  With this choice of interfaces, developers are
free to work in their own preferred environments, enhancing productivity and
agility and enabling them to innovate faster. 
    
  SQL or NoSQL - Selecting the Right Interface 
  The following chart shows all of
the access methods available to the database. The native API for MySQL Cluster is the C++ based NDB API. All other interfaces access the data through
the NDB API. 
         
  At the extreme right hand side
of the chart, an application has embedded the NDB API library enabling it to
make native C++ calls to the database, and therefore delivering the lowest
possible latency. 
    
  On the extreme left hand side of
the chart, MySQL presents a standard SQL interface to the data nodes, and
provides connectivity to all of the standard MySQL connectors including: 
    
  - Common web development languages and frameworks, i.e.
PHP, Perl, Python, Ruby, Ruby on Rails, Spring, Django, etc; 
  - JDBC (for additional connectivity into ORMs including
EclipseLink, Hibernate, etc) 
  - .NET 
  - ODBC 
    
    
  Whichever API is chosen for an
application, it is important to emphasize that all of these SQL and NoSQL
access methods can be used simultaneously, across the same data set, to provide
the ultimate in developer flexibility. Therefore, MySQL Cluster maybe
supporting any combination of the following services, in real-time: 
    
  - Relational queries using the SQL API; 
  - Key/Value-based web services using the REST/JSON and
memcached APIs; 
  - Enterprise applications with the ClusterJ and JPA APIs; 
  - Real-time web services (i.e. presence and location based)
using the NDB API. 
    
    
  The following figure aims to
summarize the capabilities and use-cases for each API. 
   
    
    
    
  Schema-less Data Store with the memcached API 
  As part of the MySQL
Cluster 7.2 Development Milestone Release , Oracle announced the preview of
native memcached Key/Value API support for MySQL Cluster  enabling direct
access to the database from the memcached API without passing through the SQL
layer.  You can read more about the implementation
and how to get going with it in this excellent post from Andrew Morgan. 
  The following image shows the implementation of the memcached API for MySQL Cluster&#160; 
       
  Implementation
is simple - the application sends read and write requests to the memcached process
(using the standard memcached API). This in turn invokes the Memcached Driver
for NDB (which is part of the same process), which in turn calls the NDB API
for very quick access to the data held in MySQL Cluster’s data nodes.  
    
  The solution
has been designed to be very flexible, allowing the application architect to
find a configuration that best fits their needs. It is possible to co-locate
the memcached API in either the data nodes or application nodes, or
alternatively within a dedicated memcached layer.  
  The benefit of this
approach is that users can configure behavior on a per-key-prefix basis
(through tables in MySQL Cluster) and the application doesn’t have to care – it
just uses the memcached API and relies on the software to store data in the
right place(s) and to keep everything synchronized. 
  By default, every Key
/ Value is written to the same table with each Key / Value pair stored in a
single row – thus allowing schema-less data storage. Alternatively, the
developer can define a key-prefix so that each value is linked to a pre-defined
column in a specific table. 
  Of course if the
application needs to access the same data through SQL then developers can map
key prefixes to existing table columns, enabling Memcached access to
schema-structured data already stored in MySQL Cluster. 
  Summary 
  MySQL Cluster provides developers and architects with a huge amount of flexibility in accessing their persistent data stores - a reflection that one size no longer fits all in the world of web services and databases. 
  You can learn more about this, and the other dimensions to scaling web databases in our new Guide.&#160; 
  As ever, let me know your thoughts in the comments below.&#160;]]></description>
			<content:encoded><![CDATA[<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>281</o:Words>
  <o:Characters>1602</o:Characters>
  <o:Company>Homework</o:Company>
  <o:Lines>13</o:Lines>
  <o:Paragraphs>3</o:Paragraphs>
  <o:CharactersWithSpaces>1880</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--> <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInval>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--> <!--[if gte mso 10]>

<![endif]--> <!--StartFragment--> 
  <p> </p> 
  <p>Supporting successful services on the web means scaling your back-end databases across multiple dimensions. This blog focuses on scaling access methods to your data using SQL and/or NoSQL interfaces.</p> 
  <p> </p> 
  <p><span lang="EN">In <a href="http://blogs.oracle.com/MySQL/entry/scaling_web_databases_auto_sharding">Part 1</a> of
the blog series ,
I discussed scaling database performance </span><span>using auto-sharding and
active/active geographic replication in <a href="http://mysql.com/products/cluster/">MySQL Cluster</a> to enable applications to
scale both within and across data centers. &nbsp;</span></p> 
  <p align="left"><span>In
<a href="http://blogs.oracle.com/MySQL/entry/scaling_web_databases_adding_nodes">Part 2</a>,
I discussed the need to scale operational agility to keep pace with demand, which includes being able to add capacity and performance to the database, and
to evolve the schema – all without downtime.</span></p> 
  <p align="left"><span>So
in this blog I want to explore another dimension to scalability - &nbsp;how multiple interfaces can be
used to scale access to the database, enabling users to simultaneously serve
multiple applications, each with distinct access requirements.</span></p> 
  <p><b><span lang="EN">Data
Access Interfaces to MySQL Cluster<o:p /></span></b></p> 
  <p><span lang="EN">MySQL Cluster automatically shards tables across pools of commodity data nodes, rather than store those tables in a single MySQL Server. It is therefore able to present multiple interfaces to the database, giving d</span>evelopers a
choice between:</p> 
  <p> </p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN-US">S &nbsp; &nbsp;- &nbsp;SQL for complex reporting-type queries;</span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN-US">S &nbsp; &nbsp;- &nbsp;Simple Key/Value interfaces bypassing the SQL layer
for blazing fast reads &amp; writes;</span></p> 
  <p><span lang="EN"><span>-<span> </span></span></span><span lang="EN-US">S &nbsp; &nbsp;- &nbsp;Real-time interfaces for micro-second latency, again bypassing the SQL layer</span></p> 
  <p> </p> 
  <p><span lang="EN"><o:p> </o:p></span></p> 
  <p><span lang="EN">With this choice of interfaces, </span><span lang="EN-US">developers are
free to work in their own preferred environments, enhancing productivity and
agility and enabling them to innovate faster.</span></p> 
  <p> </p> 
  <p><b>SQL or NoSQL - Selecting the Right Interface</b></p> 
  <p><span lang="EN">The following chart shows all of
the access methods available to the database. The native API for MySQL Cluster is the C++ based NDB API. All other interfaces access the data through
the NDB API.</span></p> 
  <p> <img src="http://blogs.oracle.com/MySQL/resource/cluster_apis.jpg" /> </p> <!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>190</o:Words>
  <o:Characters>1089</o:Characters>
  <o:Company>Homework</o:Company>
  <o:Lines>9</o:Lines>
  <o:Paragraphs>2</o:Paragraphs>
  <o:CharactersWithSpaces>1277</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--> <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInval>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--> <!--[if gte mso 10]>

<![endif]--> <!--StartFragment--> 
  <p><span lang="EN">At the extreme right hand side
of the chart, an application has embedded the NDB API library enabling it to
make native C++ calls to the database, and therefore delivering the lowest
possible latency.<o:p /></span></p> 
  <p><span lang="EN"><o:p> </o:p></span></p> 
  <p><span lang="EN">On the extreme left hand side of
the chart, MySQL presents a standard SQL interface to the data nodes, and
provides connectivity to all of the standard MySQL connectors including:</span></p> 
  <p> </p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">Common web development languages and frameworks, i.e.
PHP, Perl, Python, Ruby, Ruby on Rails, Spring, Django, etc;<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">JDBC (for additional connectivity into ORMs including
EclipseLink, Hibernate, etc)<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">.NET<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">ODBC</span></p> 
  <p> </p> 
  <p><span lang="EN"><o:p> </o:p></span></p> 
  <p><span lang="EN">Whichever API is chosen for an
application, it is important to emphasize that all of these SQL and NoSQL
access methods can be used simultaneously, across the same data set, to provide
the ultimate in developer flexibility. Therefore, MySQL Cluster maybe
supporting any combination of the following services, in real-time:</span></p> 
  <p> </p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">Relational queries using the SQL API;<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">Key/Value-based web services using the REST/JSON and
memcached APIs;<o:p /></span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">Enterprise applications with the ClusterJ and JPA APIs;</span></p> 
  <p><!--[if !supportLists]--><span lang="EN"><span>-<span> </span></span></span><!--[endif]--><span lang="EN">Real-time web services (i.e. presence and location based)
using the NDB API.<o:p /></span></p> 
  <p><span lang="EN"><o:p> </o:p></span></p> 
  <p> </p> 
  <p><span lang="EN">The following figure aims to
summarize the capabilities and use-cases for each API.</span></p> 
  <p><img src="http://blogs.oracle.com/MySQL/resource/Cluster_api_cheatsheet.jpg" /></p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p><b>Schema-less Data Store with the memcached API</b></p> 
  <p>As part of the <a href="http://dev.mysql.com/tech-resources/articles/mysql-cluster-labs-dev-milestone-release.html">MySQL
Cluster 7.2 Development Milestone Release</a> , Oracle announced the preview of
native memcached Key/Value API support for MySQL Cluster <span> </span><span lang="EN-US">enabling direct
access to the database from the memcached API without passing through the SQL
layer. <span> </span>You can read more about the implementation
and how to get going with it in this <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/">excellent post</a><span> </span></span>from Andrew Morgan.</p> 
  <p>The following image shows the implementation of the memcached API for MySQL Cluster&nbsp;</p> 
  <p><img src="http://blogs.oracle.com/MySQL/resource/cluster_memcached.jpg" /><br /></p> <!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>210</o:Words>
  <o:Characters>1200</o:Characters>
  <o:Company>Homework</o:Company>
  <o:Lines>10</o:Lines>
  <o:Paragraphs>2</o:Paragraphs>
  <o:CharactersWithSpaces>1408</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]--> <!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInval>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="0" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="0" Name="footnote text"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]--> <!--[if gte mso 10]>

<![endif]--> <!--StartFragment--> 
  <p align="left">Implementation
is simple - the application sends read and write requests to the memcached process
(using the standard memcached API). This in turn invokes the Memcached Driver
for NDB (which is part of the same process), which in turn calls the NDB API
for very quick access to the data held in MySQL Cluster’s data nodes. <o:p /></p> 
  <p align="left"><o:p> </o:p></p> 
  <p align="left">The solution
has been designed to be very flexible, allowing the application architect to
find a configuration that best fits their needs. It is possible to co-locate
the memcached API in either the data nodes or application nodes, or
alternatively within a dedicated memcached layer.<span> </span><o:p /></p> 
  <p align="left">The benefit of this
approach is that users can configure behavior on a per-key-prefix basis
(through tables in MySQL Cluster) and the application doesn’t have to care – it
just uses the memcached API and relies on the software to store data in the
right place(s) and to keep everything synchronized.</p> 
  <p align="left">By default, every Key
/ Value is written to the same table with each Key / Value pair stored in a
single row – thus allowing schema-less data storage. Alternatively, the
developer can define a key-prefix so that each value is linked to a pre-defined
column in a specific table.</p> 
  <p align="left">Of course if the
application needs to access the same data through SQL then developers can map
key prefixes to existing table columns, <span lang="EN-US">enabling Memcached access to
schema-structured data already stored in MySQL Cluster.</span></p> 
  <p align="left"><b>Summary</b></p> 
  <p>MySQL Cluster provides developers and architects with a huge amount of flexibility in accessing their persistent data stores - a reflection that one size no longer fits all in the world of web services and databases.</p> 
  <p>You can learn more about this, and the other dimensions to scaling web databases in our new<a href="http://mysql.com/why-mysql/white-papers/mysql_wp_scaling_web_databases.php"> Guide.&nbsp;</a></p> 
  <p>As ever, let me know your thoughts in the comments below.&nbsp;</p> 
  <p><br /></p> 
  <p> </p> <!--EndFragment--> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> 
  <p> </p> <!--EndFragment--><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=29634&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=29634&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/08/05/scaling-web-databases-part-3-sql-nosql-data-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Direct access to MySQL Cluster through Memcached API – free webinar</title>
		<link>http://www.clusterdb.com/mysql-cluster/direct-access-to-mysql-cluster-through-memcached-api-free-webinar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=direct-access-to-mysql-cluster-through-memcached-api-free-webinar&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=direct-access-to-mysql-cluster-through-memcached-api-%25e2%2580%2593-free-webinar</link>
		<comments>http://www.clusterdb.com/mysql-cluster/direct-access-to-mysql-cluster-through-memcached-api-free-webinar/?utm_source=rss&#038;amp;utm_medium=rss&#038;amp;utm_campaign=direct-access-to-mysql-cluster-through-memcached-api-free-webinar#comments</comments>
		<pubDate>Mon, 18 Jul 2011 09:22:02 +0000</pubDate>
		<dc:creator>Andrew Morgan</dc:creator>
				<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[MySQL Cluster]]></category>
		<category><![CDATA[MySQL Cluster 7.2]]></category>
		<category><![CDATA[NoSQL]]></category>

		<guid isPermaLink="false">http://www.clusterdb.com/?p=1901</guid>
		<description><![CDATA[Memcached access to MySQL Cluster
As described in an earlier post Memcached is an extremely popular caching layer used in most big web properties and we&#8217;re adding the ability to access MySQL Cluster directly using the familiar Memcached key-value/NoSQL API without needing to go through the MySQL Server. There is a huge amount of flexibility built into this solution &#8211; including:

Decide what data should be held only in the Memcached server; what should be written straight through to MySQL Cluster and then discarded  and what data should be cached in Memcached but persisted in MySQL Cluster
Where data is held both in Cluster and the Memcached server, they can automatically be kept in sync
By default it&#8217;s completely schema-less, all key-value pairs will be transparently stored in a single table within MySQL Cluster behind the scenes
Can map key-prefixes to columns in MySQL Cluster tables &#8211; allowing simultaneous access to the same data using SQL.

Mat Keep along with JD Duncan (lead developer for this functionality) will be hosting a free webinar on this topic (and I&#8217;ll be helping with the Q&#38;A) on Wednesday (20th July 2011) at 9:00 am Pacific (17:00 UK, 18:00 CET). As always, please register for the event even if you can&#8217;t make this time as you&#8217;ll be sent a link to the recording.]]></description>
			<content:encoded><![CDATA[<div><a href="http://www.clusterdb.com/wp-content/uploads/2011/04/Memcached_layer1.jpg"><img class="size-medium wp-image-1704" title="Memcached_layer" src="http://www.clusterdb.com/wp-content/uploads/2011/04/Memcached_layer1-300x224.jpg" alt="" width="300" height="224" /></a><p>Memcached access to MySQL Cluster</p></div>
<p>As described in an <a href="http://www.clusterdb.com/mysql-cluster/scalabale-persistent-ha-nosql-memcache-storage-using-mysql-cluster/" >earlier post</a> Memcached is an extremely popular caching layer used in most big web properties and we&#8217;re adding the ability to access MySQL Cluster directly using the familiar Memcached key-value/NoSQL API without needing to go through the MySQL Server. There is a huge amount of flexibility built into this solution &#8211; including:</p>
<ul>
<li>Decide what data should be held only in the Memcached server; what should be written straight through to MySQL Cluster and then discarded  and what data should be cached in Memcached but persisted in MySQL Cluster</li>
<li>Where data is held both in Cluster and the Memcached server, they can automatically be kept in sync</li>
<li>By default it&#8217;s completely schema-less, all key-value pairs will be transparently stored in a single table within MySQL Cluster behind the scenes</li>
<li>Can map key-prefixes to columns in MySQL Cluster tables &#8211; allowing simultaneous access to the same data using SQL.</li>
</ul>
<div>Mat Keep along with JD Duncan (lead developer for this functionality) will be hosting a free webinar on this topic (and I&#8217;ll be helping with the Q&amp;A) on Wednesday (20th July 2011) at 9:00 am Pacific (17:00 UK, 18:00 CET). As always, please <a href="http://www.mysql.com/news-and-events/web-seminars/display-643.html?p=twitter" >register for the event</a> even if you can&#8217;t make this time as you&#8217;ll be sent a link to the recording.</div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=29395&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=29395&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/07/18/direct-access-to-mysql-cluster-through-memcached-api-%e2%80%93-free-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On generating unique IDs using LAST_INSERT_ID() and other tools</title>
		<link>http://code.openark.org/blog/mysql/on-generating-unique-ids-using-last_insert_id-and-other-tools?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=on-generating-unique-ids-using-last_insert_id-and-other-tools</link>
		<comments>http://code.openark.org/blog/mysql/on-generating-unique-ids-using-last_insert_id-and-other-tools#comments</comments>
		<pubDate>Wed, 02 Feb 2011 06:50:02 +0000</pubDate>
		<dc:creator>Shlomi Noach</dc:creator>
				<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[query-cache]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=3283</guid>
		<description><![CDATA[There&#8217;s a trick for using LAST_INSERT_ID() to generate sequences in MySQL. Quoting from the Manual:


Create a table to hold the sequence counter and initialize               it:
mysql&#62; CREATE TABLE sequence (id INT NOT NULL);
mysql&#62; INSERT INTO sequence VALUES (0);


Use the table to generate sequence numbers like this:
mysql&#62; UPDATE sequence SET id=LAST_INSERT_ID(id+1);
mysql&#62; SELECT LAST_INSERT_ID();




This trick calls for trouble.
Contention
A customer was using this trick to generate unique session IDs for his JBoss sessions. These IDs would eventually be written back to the database in the form of log events. Business go well, and one day the customer adds three new JBoss servers (doubling the amount of webapps). All of a sudden, nothing works quite as it used to. All kinds of queries take long seconds to complete; load average becomes very high.
A short investigation reveals that a very slight load is enough to make for an accumulation of sequence-UPDATE queries. Dozens of them are active at any given time, waiting for long seconds.
InnoDB or MyISAM both make for poor response times. No wonder! Everyone&#8217;s contending for one lock.
Not just one
Other queries seem to hang as well. Why?
It is easy to forget or let go unnoticed that there are quite a few global locks involved with each query. If query cache is activated, then any query must pass through that cache, holding the query cache mutex. There&#8217;s a global mutex on MyISAM&#8217;s key cache. There&#8217;s one on InnoDB&#8217;s buffer pool (see multiple buffer pools in InnoDB 5.5), albeit less of an overhead. And there&#8217;s the table cache.
When table cache is enabled, any completed query attempts to return file handles to the cache. Any new query attempts to retrieve handles from the cache. While writing to the cache (extracting, adding), the cache is locked. When everyone&#8217;s busy doing the sequence-UPDATE, table cache lock is being abused. Other queries are unable to find the time to squire the lock and get on with their business.
What can be done?
One could try and increase the table_open_cache value. That may help to some extent, and for limited time. But the more requests are made, the quicker the problem surfaces again. When, in fact, reducing the table_open_cache to zero (well, minimum value is 1) can make for a great impact. If there&#8217;s nothing to fight for, everyone just get by on their own.
I know the following is not a scientific explanation, but it hits me as a good comparison: when my daughter brings a friend over, and there&#8217;s a couple of toys, both are happy. A third friend makes for a fight: &#8220;I saw it first! She took it from me! I was holding it!&#8221;. Any parent knows the ultimate solution to this kind of fight: take away the toys, and have them find something else to enjoy doing. OK, sorry for this unscientific display, I had to share my daily stress.
When no table cache is available, a query will go on opening the table by itself, and will not attempt to return the file handle back to the cache. The file handle will simply be destroyed. Now, usually this is not desired. Caching is good. But in our customer&#8217;s case, the cost of not using a table cache was minified by the cost of having everyone fight for the sequence table. Reducing the table cache made for an immediate relaxation of the database, with observable poorer responsiveness on peak times, however way better than with large table cache.
Other tools?
I don&#8217;t consider the above to be a good solution. It&#8217;s just a temporary hack.
I actually don&#8217;t like the LAST_INSERT_ID() trick. Moreover, I don&#8217;t see that it&#8217;s the database&#8217;s job to provide with unique IDs. Let it do relational stuff. If generating IDs is too intensive, let someone else do it.
NoSQL solutions provide such a service. Memcached, redis, MongoDB (and probably more) all provide with increment functions. Check them out.
Application level solutions
I actually use an application level solution to generate unique IDs. I mean, there&#8217;s always GUID(), but it&#8217;s result is just too long. Take a look at the following Java code:

public class Utils {
  private static long lastUniqueNumber = 0;

  public static synchronized long uniqueNumber() {
    long unique = System.currentTimeMillis();
    if (unique &#60;= lastUniqueNumber)
      unique = lastUniqueNumber + 1;
    lastUniqueNumber = unique;
    return unique;
  }
}

Within a Java application this above method returns with unique IDs, up to 1000 per second on average (and it can perform way more than 1000 times per second).
On consequential executions of applications on the same machine one would still expect unique values due to the time-related nature of values. However, computer time changes. It&#8217;s possible that System.currentTimeMillis() would return a value already used in the past.
And, what about two processes running on the same machine at the same time? Or on different machine?
Which is why I use the following combination to generate my unique IDs:

Server ID (much like MySQL&#8217;s server_id parameter). this could be the last byte in the server&#8217;s IP address, or just 4 or 5 bits if not too many players are expected.
Process ID (plain old pid) which I pass to the Java runtime in the form of system properties. Any two processes running on the same machine are assured to have different IDs. To consequently spawned processes will have different IDs. The time it would take to cycle the process IDs is way more than would make for a &#8220;time glitch&#8221; problem as described above
Current time in milliseconds.

If you have to have everything withing 64 bit (BIGINT) then you&#8217;ll have to do bit manipulation, and drop some of the MSB on the milliseconds so as to overwrite with server &#38; process IDs.
If you are willing to have your IDs unique in the bounds of a given time frame (so, for example, a month from now you wouldn&#8217;t mind reusing old IDs), then the problem is significantly easier. You may just use &#8220;day of month&#8221; and &#8220;millis since day start&#8221; and save those precious bits.
Still other?
Please share your solutions below!]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a <a href="http://dev.mysql.com/doc/refman/5.1/en/information-functions.html#function_last-insert-id">trick</a> for using <strong>LAST_INSERT_ID()</strong> to generate sequences in MySQL. Quoting from the Manual:</p>
<blockquote>
<ol type="1">
<li>Create a table to hold the sequence counter and initialize               it:
<pre>mysql&gt; <strong><code>CREATE TABLE sequence (id INT NOT NULL);</code></strong>
mysql&gt; <strong><code>INSERT INTO sequence VALUES (0);</code></strong>
</pre>
</li>
<li>Use the table to generate sequence numbers like this:
<pre>mysql&gt; <strong><code>UPDATE sequence SET id=LAST_INSERT_ID(id+1);</code></strong>
mysql&gt; <strong><code>SELECT LAST_INSERT_ID();</code></strong>
</pre>
</li>
</ol>
</blockquote>
<p>This trick calls for trouble.</p>
<h4>Contention</h4>
<p>A customer was using this trick to generate unique session IDs for his JBoss sessions. These IDs would eventually be written back to the database in the form of log events. Business go well, and one day the customer adds three new JBoss servers (doubling the amount of webapps). All of a sudden, nothing works quite as it used to. All kinds of queries take long seconds to complete; load average becomes very high.<span></span></p>
<p>A short investigation reveals that a very slight load is enough to make for an accumulation of sequence-UPDATE queries. Dozens of them are active at any given time, waiting for long seconds.</p>
<p>InnoDB or MyISAM both make for poor response times. No wonder! Everyone&#8217;s contending for one lock.</p>
<h4>Not just one</h4>
<p>Other queries seem to hang as well. Why?</p>
<p>It is easy to forget or let go unnoticed that there are quite a few global locks involved with each query. If query cache is activated, then any query must pass through that cache, holding the query cache mutex. There&#8217;s a global mutex on MyISAM&#8217;s key cache. There&#8217;s one on InnoDB&#8217;s buffer pool (see multiple buffer pools in InnoDB 5.5), albeit less of an overhead. And there&#8217;s the table cache.</p>
<p>When table cache is enabled, any completed query attempts to return file handles to the cache. Any new query attempts to retrieve handles from the cache. While writing to the cache (extracting, adding), the cache is locked. When everyone&#8217;s busy doing the sequence-UPDATE, table cache lock is being abused. Other queries are unable to find the time to squire the lock and get on with their business.</p>
<h4>What can be done?</h4>
<p>One could try and increase the <strong>table_open_cache</strong> value. That may help to some extent, and for limited time. But the more requests are made, the quicker the problem surfaces again. When, in fact, <em>reducing</em> the <strong>table_open_cache</strong> to zero (well, minimum value is <strong>1</strong>) can make for a great impact. If there&#8217;s nothing to fight for, everyone just get by on their own.</p>
<p>I know the following is not a scientific explanation, but it hits me as a good comparison: when my daughter brings a friend over, and there&#8217;s a couple of toys, both are happy. A third friend makes for a fight: <em>&#8220;I saw it first! She took it from me! I was holding it!&#8221;</em>. Any parent knows the ultimate solution to this kind of fight: take away the toys, and have them find something else to enjoy doing. OK, sorry for this unscientific display, I had to share my daily stress.</p>
<p>When no table cache is available, a query will go on opening the table by itself, and will not attempt to return the file handle back to the cache. The file handle will simply be destroyed. Now, usually this is not desired. Caching is good. But in our customer&#8217;s case, the cost of not using a table cache was minified by the cost of having everyone fight for the sequence table. Reducing the table cache made for an immediate relaxation of the database, with observable poorer responsiveness on peak times, however way better than with large table cache.</p>
<h4>Other tools?</h4>
<p>I don&#8217;t consider the above to be a good solution. It&#8217;s just a temporary hack.</p>
<p>I actually don&#8217;t like the <strong>LAST_INSERT_ID()</strong> trick. Moreover, I don&#8217;t see that it&#8217;s the database&#8217;s job to provide with unique IDs. Let it do relational stuff. If generating IDs is too intensive, let someone else do it.</p>
<p>NoSQL solutions provide such a service. <a href="http://memcached.org/">Memcached</a>, <a href="http://redis.io/">redis</a>, <a href="http://www.mongodb.org/">MongoDB</a> (and probably more) all provide with increment functions. Check them out.</p>
<h4>Application level solutions</h4>
<p>I actually use an application level solution to generate unique IDs. I mean, there&#8217;s always <strong>GUID()</strong>, but it&#8217;s result is just too long. Take a look at the following Java code:</p>
<blockquote>
<pre>public class Utils {
  private static long lastUniqueNumber = 0;

  public static synchronized long uniqueNumber() {
    long unique = System.currentTimeMillis();
    if (unique &lt;= lastUniqueNumber)
      unique = lastUniqueNumber + 1;
    lastUniqueNumber = unique;
    return unique;
  }
}</pre>
</blockquote>
<p>Within a Java application this above method returns with unique IDs, up to 1000 per second on average (and it can perform way more than 1000 times per second).</p>
<p>On consequential executions of applications on the same machine one would still expect unique values due to the time-related nature of values. However, computer time changes. It&#8217;s possible that <strong>System.currentTimeMillis()</strong> would return a value already used in the past.</p>
<p>And, what about two processes running on the same machine at the same time? Or on different machine?</p>
<p>Which is why I use the following combination to generate my unique IDs:</p>
<ul>
<li>Server ID (much like MySQL&#8217;s server_id parameter). this could be the last byte in the server&#8217;s IP address, or just 4 or 5 bits if not too many players are expected.</li>
<li>Process ID (plain old pid) which I pass to the Java runtime in the form of system properties. Any two processes running on the same machine are assured to have different IDs. To consequently spawned processes will have different IDs. The time it would take to cycle the process IDs is way more than would make for a &#8220;time glitch&#8221; problem as described above</li>
<li>Current time in milliseconds.</li>
</ul>
<p>If you have to have everything withing 64 bit (BIGINT) then you&#8217;ll have to do bit manipulation, and drop some of the MSB on the milliseconds so as to overwrite with server &amp; process IDs.</p>
<p>If you are willing to have your IDs unique in the bounds of a given time frame (so, for example, a month from now you wouldn&#8217;t mind reusing old IDs), then the problem is significantly easier. You may just use &#8220;day of month&#8221; and &#8220;millis since day start&#8221; and save those precious bits.</p>
<h4>Still other?</h4>
<p>Please share your solutions below!</p><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=27152&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=27152&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2011/02/02/on-generating-unique-ids-using-last_insert_id-and-other-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plugin Memcached 20 Study</title>
		<link>http://learnmysql.blogspot.com/2010/11/plugin-memcached20-study.html?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=plugin-memcached-20-study</link>
		<comments>http://learnmysql.blogspot.com/2010/11/plugin-memcached20-study.html#comments</comments>
		<pubDate>Tue, 02 Nov 2010 11:57:00 +0000</pubDate>
		<dc:creator>navjyot</dc:creator>
				<category><![CDATA[memcached]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Check out this SlideShare Presentation: Plugin Memcached%20 StudyView more presentations from Liu Lizhi.]]></description>
			<content:encoded><![CDATA[Check out this SlideShare Presentation: <br /><div><b><a href="http://www.slideshare.net/chinawolfs/plugin-memcached20-study" title="Plugin Memcached%20 Study">Plugin Memcached%20 Study</a></b><br /><div>View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/chinawolfs">Liu Lizhi</a>.</div></div><div><img width="1" height="1" src="https://blogger.googleusercontent.com/tracker/6428405298205573074-7016444353873574894?l=learnmysql.blogspot.com" alt="" /></div><br/>PlanetMySQL Voting:
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26347&vote=1&apivote=1">Vote UP</a> /
	 <a href="http://planet.mysql.com/entry/vote/?entry_id=26347&vote=-1&apivote=1">Vote DOWN</a>]]></content:encoded>
			<wfw:commentRss>http://planetmysql.ru/2010/11/02/plugin-memcached-20-study/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

