<?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>beer planet &#187; primebase xt</title> <atom:link href="http://beerpla.net/tag/primebase-xt/feed/" rel="self" type="application/rss+xml" /><link>http://beerpla.net</link> <description>where things have nothing to do with beer - tutorials, tips, how-tos, thoughts, hacks, and other techy nonsense</description> <lastBuildDate>Thu, 17 May 2012 22:50:53 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.2</generator> <atom:link rel='hub' href='http://beerpla.net/?pushpress=hub'/> <item><title>MySQL Conference Liveblogging: Introduction To The BLOB Streaming Project (Wednesday 3:00PM)</title><link>http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/</link> <comments>http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/#comments</comments> <pubDate>Wed, 16 Apr 2008 22:05:06 +0000</pubDate> <dc:creator>Artem Russakovskii</dc:creator> <category><![CDATA[Databases]]></category> <category><![CDATA[blob]]></category> <category><![CDATA[conference]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[paul mccullagh]]></category> <category><![CDATA[pbxt]]></category> <category><![CDATA[primebase xt]]></category> <category><![CDATA[streaming]]></category> <guid
isPermaLink="false">http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/</guid> <description><![CDATA[<ul><li>Paul McCullagh presents</li><li>BLOB</li></ul><ul><li>invented by Jim Starkey</li><li>Basic Large OBject</li><li>Binary Large OBject</li><li>photos, films, mp4 files, pdfs, etc</li></ul><li>how MySQL handles BLOBs</li><ul><li>mysql client send buffer -&#62; receive buffer on the server (max_allowed_packet)</li><li>streaming a BLOB</li></ul><ul><li>continuous data stream</li><li>stream BLOB data directly in and out of the database</li><li>store BLOBs of any size (&#62;4GB) in the database</li><li>create a scalable back-end that can handle any throughput and storage requirements. Wouldn&#039;t need to know in advance how big the database will get</li><li>provide an open system that can be used by all engines</li><li>provide extensions for BLOB streaming to existing MySQL clients</li></ul><li><strong>why put BLOBs in the database?</strong></li><ul><li><strong>referential integrity</strong> (no invalid references), can take a lot of</li>...<div
class=clear></div> <a
href="http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/" class="read_more"><div
class=excerpt-end>Read the rest of this article &#187;</div></a></ul>]]></description> <content:encoded><![CDATA[<ul><li>Paul McCullagh presents</li><li>BLOB</li><ul><li>invented by Jim Starkey</li><li>Basic Large OBject</li><li>Binary Large OBject</li><li>photos, films, mp4 files, pdfs, etc</li></ul><li>how MySQL handles BLOBs</li><ul><li>mysql client send buffer -&gt; receive buffer on the server (max_allowed_packet)</li><li>streaming a BLOB</li><ul><li>continuous data stream</li><li>stream BLOB data directly in and out of the database</li><li>store BLOBs of any size (&gt;4GB) in the database</li><li>create a scalable back-end that can handle any throughput and storage requirements. Wouldn&#039;t need to know in advance how big the database will get</li><li>provide an open system that can be used by all engines</li><li>provide extensions for BLOB streaming to existing MySQL clients</li></ul></ul><li><strong>why put BLOBs in the database?</strong></li><ul><li><strong>referential integrity</strong> (no invalid references), can take a lot of time to sort out missing data</li><li><strong>all data in one place</strong> &#8211; structured and unstructured. Good for testing</li><li><strong>small BLOBs</strong> are handled better by databases</li><li><strong>backups</strong> are consistent</li><li>BLOBs can be <strong>replicated</strong></li></ul><li>why &#034;not to BLOB&#034; (currently)?</li><ul><li>a BLOB column makes a table slow</li><ul><li>big rows in memory</li><li>sequential scans are not possible</li></ul><li>database becomes too big</li><ul><li>cannot be copied easily</li><li>backups become slow</li><li>space not freed on delete</li><li>database doesn&#039;t scale well</li></ul></ul><li>solution to these problems</li><ul><li>a separate BLOB repository, outside of database rows</li><li>references are stored in the table</li><li>allows for incremental backups</li><li>automatic defrag and compaction</li><li>BLOBs not written to binlogs</li><li>repository can be scaled-out</li></ul><li>Paul shows BLOB streaming architecture</li><ul><li>BLOB storage engine (MyBS, heh heh, Baron especially likes this acronym)</li><li>PBXT &#8211; streaming enabled engine or other storage engines</li><li>HTTP-based API extension</li></ul><li>BLOB streaming engine</li><ul><li>does not provide conventional table storage (CREATE TABLE syntax only for system tables)</li><li><strong>built-in HTTP server (port 8080 by default)</strong></li><li>BLOB repository</li><li>provides a server-side API</li></ul><li>Temp BLOB timeout</li><ul><li>BLOBs that are not referenced are deleted from the repository</li><li>initially all BLOBs don&#039;t have references to them yet</li><li>timeout is used (mysql_temp_blob_timeout)</li></ul><li><strong>Paul shows a very interesting demo</strong></li><ul><li><strong>creates a table of type PBXT</strong></li><li><strong>uploads an image into the BLOB engine directly (using curl)</strong></li><li><strong>gets back a reference id for the newly inserted BLOB</strong></li><li><strong>accesses the image right in the browser using a GET request with the reference id from above</strong></li><li><strong>Paul does a SELECT on the BLOB engine and gets back the earlier inserted BLOB with such things as BLOB size, content type (MIME), and EXIF data</strong></li><li><strong>now Paul shows what happens if you insert a BLOB and don&#039;t access it. It then gets automatically purged from the BLOB engine after the BLOB timeout (mentioned above)</strong></li><li>I like what I&#039;m seeing so far. Very interesting work, Paul. Definitely worth checking out the actual slides</li></ul><li>client-side extensions</li><ul><li>JDBC already works get/setBinaryStream(), get/setBlob()</li><li>Google Summer of Code 2008 to add connector to PHP</li><li>still to be done</li><ul><li>mysqlclient library &#8211; simple extension to do HTTP GET and PUT</li><li>other languages (Perl, Ruby, etc)</li></ul></ul><li>backup</li><ul><li>mysqldump will dump repository names and references</li></ul><li>future plans</li><ul><li>distributed repository</li></ul><li><strong>someone asks a question about BLOB repository&#039;s performance and benchmarks</strong></li><ul><li>Paul has a convenient benchmark of a BLOB engine compared to xfs</li><li>on the chart, creating and reading BLOBs stays practically the same no matter how many objects are present (in the engine or on the file system), while the file system starts high but quickly degrades almost to 0</li><li>Why does the file system degrade to 0? Did you put all the files in the same directory? This looks very odd</li><li>the next slide shows that when adding threads, the BLOB engine yet again performs the same and scales well while the file system starts degrading after 4-8 threads</li><li>why is the performance better than, let&#039;s say, lighttpd pulling from a file system?</li></ul><li><a
href="http://www.blobstreaming.org">http://www.blobstreaming.org</a></li><li><a
href="http://sourceforge.net/projects/mybs">http://sourceforge.net/projects/mybs</a></li><li><a
href="http://pbxt.blogspot.com">http://pbxt.blogspot.com</a></li></ul><div
class="shr-bookmarks shr-bookmarks-expand"><ul
class="socials"><li
class="shr-twitter"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=%24%7Btitle%7D+-+%24%7Bshort_link%7D&amp;service=7&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a></li><li
class="shr-facebook"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=5&amp;tags=&amp;ctype=" rel="nofollow" title="Share this on Facebook">Share this on Facebook</a></li><li
class="shr-googlebuzz"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=257&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a></li><li
class="shr-reddit"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=40&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on Reddit">Share this on Reddit</a></li><li
class="shr-hackernews"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=202&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Submit this to Hacker News">Submit this to Hacker News</a></li><li
class="shr-delicious"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=2&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a></li><li
class="shr-stumbleupon"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL+Conference+Liveblogging%3A+Introduction+To+The+BLOB+Streaming+Project+%28Wednesday+3%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=38&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a></li><li
class="shr-mail"> <a
href="http://www.shareaholic.com/api/share/?title=MySQL%20Conference%20Liveblogging%3A%20Introduction%20To%20The%20BLOB%20Streaming%20Project%20%28Wednesday%203%3A00PM%29&amp;link=http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/&amp;notes=%20Paul%20McCullagh%20presents%20BLOB%20%20invented%20by%20Jim%20Starkey%20Basic%20Large%20OBject%20Binary%20Large%20OBject%20photos%2C%20films%2C%20mp4%20files%2C%20pdfs%2C%20etc%20how%20MySQL%20handles%20BLOBs%20%20mysql%20client%20send%20buffer%20-%26gt%3B%20receive%20buffer%20on%20the%20server%20%28max_allowed_packet%29%20streaming%20a%20BLOB%20%20continuous%20data%20stream%20stream%20BLOB%20data%20direct&amp;short_link=http://bit.ly/cAOqge&amp;v=1&amp;apitype=1&amp;apikey=8afa39428933be41f8afdb8ea21a495c&amp;source=Shareaholic&amp;template=&amp;service=201&amp;tags=&amp;ctype=" rel="nofollow" class="external" title="Email this to a friend?">Email this to a friend?</a></li></ul><div
style="clear: both;"></div></div> Similar Posts:<ul><li><a
href="http://beerpla.net/2008/04/15/mysql-conference-liveblogging-the-future-of-mysql-tuesday-1155am-2/" rel="bookmark" title="April 15, 2008">MySQL Conference Liveblogging: The Future Of MySQL (Tuesday 11:55AM)</a></li><li><a
href="http://beerpla.net/2008/03/11/mysql-falcon-storage-engine-enters-beta-stage/" rel="bookmark" title="March 11, 2008">MySQL Falcon Storage Engine Enters Beta Stage.</a></li><li><a
href="http://beerpla.net/2008/04/15/mysql-conference-liveblogging-explain-demystified-tuesday-200p/" rel="bookmark" title="April 15, 2008">MySQL Conference Liveblogging: EXPLAIN Demystified (Tuesday 2:00PM)</a></li><li><a
href="http://beerpla.net/2008/03/26/setting-up-a-mysql-cluster/" rel="bookmark" title="March 26, 2008">Setting Up A MySQL Cluster</a></li><li><a
href="http://beerpla.net/2008/04/16/mysql-conference-liveblogging-monitoring-tools-wednesday-515pm/" rel="bookmark" title="April 16, 2008">MySQL Conference Liveblogging: Monitoring Tools (Wednesday 5:15PM)</a></li></ul><p><a
class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fbeerpla.net%2F2008%2F04%2F16%2Fmysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm%2F&amp;title=MySQL%20Conference%20Liveblogging%3A%20Introduction%20To%20The%20BLOB%20Streaming%20Project%20%28Wednesday%203%3A00PM%29" id="wpa2a_2"><img
src="http://beerpla.net/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded> <wfw:commentRss>http://beerpla.net/2008/04/16/mysql-conference-liveblogging-introduction-to-the-blob-streaming-project-wednesday-300pm/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
