<?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>Adrian Otto&#039;s Blog &#187; Open Source</title>
	<atom:link href="http://adrianotto.com/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://adrianotto.com</link>
	<description>For those who care about technical details</description>
	<lastBuildDate>Thu, 20 Oct 2011 14:35:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Drizzle is now BETA</title>
		<link>http://adrianotto.com/2010/09/drizzle-is-now-beta/</link>
		<comments>http://adrianotto.com/2010/09/drizzle-is-now-beta/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 19:21:00 +0000</pubDate>
		<dc:creator>Adrian Otto</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Drizzle]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://adrianotto.com/?p=376</guid>
		<description><![CDATA[Today Drizzle enters BETA. Drizzle is an evolution of MySQL that&#8217;s been simplified, streamlined, and modernized. This long awaited database started from an idea in 2005 to fork MySQL, keep the good parts, and rip out or replace all the stuff that&#8217;s not good for web applications. This idea has been endorsed by large corporate [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://drizzle.org"><img class="alignright size-full wp-image-222" title="Drizzle Logo" src="http://cdn.adrianotto.com/wp-content/uploads/2009/11/drizzle64.png" alt="" width="64" height="64" /></a>Today <a href="http://drizzle.org" target="_blank">Drizzle</a> enters BETA. Drizzle is an evolution of MySQL that&#8217;s been simplified, streamlined, and modernized. This long awaited database started from an idea in 2005 to fork MySQL, keep the good parts, and rip out or replace all the stuff that&#8217;s not good for web applications. This idea has been endorsed by large corporate sponsors, including <a href="http://www.sun.com" target="_blank">Sun Microsystems</a> in the early days, and now <a href="http://www.rackspace.com/">Rackspace</a>. Most of the code is contributed by the <a href="https://launchpad.net/drizzle">developer community</a>, which is made up of of a very talented group of open source developers with core committers from four different companies. More about the Drizzle project:</p>
<h3>Charter</h3>
<ul>
<li>A database optimized for Cloud infrastructure and Web applications</li>
<li>Design for massive concurrency on modern multi-cpu architecture</li>
<li>Optimize memory for increased performance and parallelism</li>
<li>Open source, open community, open design</li>
</ul>
<h3>Scope</h3>
<ul>
<li>Re-designed modular architecture providing plugins with defined APIs</li>
<li>Simple design for ease of use and administration</li>
<li>Reliable, ACID transactional</li>
</ul>
<p>There are many exciting changes, such as optimizing everything for 64-bit CPU&#8217;s and Multi-Core. You can&#8217;t hardly even buy 32-bit and Single Core servers nowadays if you want them. It makes no sense to have software that&#8217;s optimized for these antiquated hardware designs. No effort is spent optimizing software to work with rotational hard drives because SSD drives are the way of the future. All the language collations have simply been replaced with UTF-8 only, because the web uses UTF-8. Plus, this is tested with 41 different language translations. Drizzle has a new scheduler. The legacy MySQL scheduler was designed to work for a thread-per-session setup. In Drizzle, sessions are handled independently from the threads. The new scheduler allows this to work.</p>
<p>Drizzle uses InnoDB as its default storage engine, which is great for OLTP. It also supports the <a href="http://www.primebase.org/" target="_blank">PBXT</a> storage engine. There are available plugins for the InnoDB Embedded Engine and <a href="http://www.haildb.com/" target="_blank">HailDB</a> which will soon be the new default. DDL Operations (like ALTER TABLE) can actually roll back in the event that something goes wrong in the process, rather than leaving you with incomplete or corrupt data.</p>
<p>The code base in Drizzle has been fully modernized, and brought up to today&#8217;s standards of C++ with extensive use of the <a href="http://en.wikipedia.org/wiki/Standard_Template_Library">C++ STL</a> to replace MySQL&#8217;s usage of obscure custom data type implementations that offered no real benefit compared to what the STL has today. Another example of improvements in this area is the replacement of the legacy REGEX implementation with a more standard library. All of these changes reduce the amount of Drizzle source code dramatically compared to MySQL. Less code and simpler code means less bugs, plain and simple. Drizzle is well on its way to being an ideal fit for web applications that need a reliable, and high performance transactional database.</p>
<h3>Features in Drizzle7 Beta</h3>
<ul>
<li>New micro kernel</li>
<li>Migration Tool</li>
<li>Instance Catalog Support</li>
<li>Universal Replication</li>
<li>User query analysis</li>
<li>Mutli-core Support</li>
</ul>
<h3>What &#8220;Beta&#8221; means</h3>
<ul>
<li>Your data is safe. Transactional engine by default and stable for over 2 years.</li>
<li>Upgrade the system in-place without exporting/importing data.</li>
<li>Replication is still being tested.</li>
</ul>
<p>In Microsoft terms, it means that this project would have launched about a year ago. In Google terms, it probably would have launched six months ago. Simply put, if you trust your data to a MySQL system today running InnoDB, you should feel comfortable trying Drizzle. There have been some changes to the InnoDB setup, such as the elimination of the FRM files from disk which eliminate possible inconsistency between the state on disk and the state in InnoDB. I am in the process of moving a few of my produciton applications to use the Drizzle Beta. If you&#8217;re an accomplished system administrator and DBA, you should seriously consider putting at least one of your production applications on Drizzle now, and see how it works for you.</p>
<h3>What&#8217;s Next?</h3>
<ul>
<li>Beta <a href="https://launchpad.net/drizzle/+announcement/6840" target="_blank">announced today 2010-09-29</a>.</li>
<li>GA February 2011</li>
<li>GA May 2011 for Multi-Tenancy features that allow an arbitrary number of logical databases (Schemas, Tables, etc.) to exist concurrently with full data isolation between them. This allows for individual security and resource controls (Threads, Memory, IO), and individual database backups, rather than system level backups. This feature will be called &#8220;Catalogs&#8221;.</li>
</ul>
<h3>Download Drizzle</h3>
<p>Time to get started with the beta. Download <a href="https://launchpad.net/drizzle/elliott/2010-09-27">the beta</a> today!</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianotto.com/2010/09/drizzle-is-now-beta/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Dev Null = Unlimited Scale</title>
		<link>http://adrianotto.com/2010/08/dev-null-unlimited-scale/</link>
		<comments>http://adrianotto.com/2010/08/dev-null-unlimited-scale/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 22:40:46 +0000</pubDate>
		<dc:creator>Adrian Otto</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://adrianotto.com/?p=331</guid>
		<description><![CDATA[It occurred to me today while watching a discussion about MySQL vs. MongoDB that there needs to be more documentation about the performance of the Dev Null database, and its open source derivatives. MongoDB fanboys should be aware that it offers the following features: 100% non-blocking Unlimited horizontal scalability Unlimited vertical scalability Supports Sharding Supports [...]]]></description>
			<content:encoded><![CDATA[<p>It occurred to me today while watching a discussion about <a href="http://www.xtranormal.com/watch/6995033/" target="_blank">MySQL vs. MongoDB</a> that there needs to be more documentation about the performance of the Dev Null database, and its open source derivatives. MongoDB fanboys should be aware that it offers the following features:</p>
<ul>
<li>100% non-blocking<a href="http://adrianotto.com/2010/08/dev-null-unlimited-scale/"><img class="alignright size-full wp-image-338" title="dev-null-logo" src="http://cdn.adrianotto.com/wp-content/uploads/2010/08/dev-null-logo.png" alt="" width="202" height="102" /></a></li>
<li>Unlimited horizontal scalability</li>
<li>Unlimited vertical scalability</li>
<li>Supports Sharding</li>
<li>Supports Clustering</li>
<li>Exceeds write performance of all other databases</li>
<li>Unparalleled concurrency support</li>
<li>Write-and-forget</li>
</ul>
<p>Here is a chart that illustrates write latency and throughput with various different thread concurrency:</p>
<p><img class="size-full wp-image-332 alignnone" title="dev-null-wtite-perf" src="http://cdn.adrianotto.com/wp-content/uploads/2010/08/dev-null-wtite-perf.png" alt="" width="616" height="386" /></p>
<p>As you can see, as the number of concurrent writers increases, throughput increases proportionally. No matter how many threads run concurrently, latency remains at zero.</p>
<h3>Support in MySQL<a href="http://www.mysql.com/"><img class="alignright size-full wp-image-335" title="logo-mysql-110x57" src="http://cdn.adrianotto.com/wp-content/uploads/2010/08/logo-mysql-110x57.png" alt="MySQL Logo" width="110" height="57" /></a></h3>
<p>You may be thrilled to know that this data storage system is fully supported in MySQL using the <a href="http://dev.mysql.com/doc/refman/5.0/en/blackhole-storage-engine.html" target="_blank">Blackhole Storage Engine</a> written by <a href="http://krow.net" target="_blank">Brian Aker</a>. Anyone considering MongoDB should give this alternative some consideration, as it exhibits the same level of data loss for new data pending writes before a node failure. Plus, MySQL has been around for a long time, and this storage engine is the single most reliable storage engine that MySQL ever produced.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianotto.com/2010/08/dev-null-unlimited-scale/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Cassandra Gets Promoted!</title>
		<link>http://adrianotto.com/2010/03/cassandra-gets-promoted/</link>
		<comments>http://adrianotto.com/2010/03/cassandra-gets-promoted/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 07:00:20 +0000</pubDate>
		<dc:creator>Adrian Otto</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://adrianotto.com/?p=287</guid>
		<description><![CDATA[Today it&#8217;s the one month anniversary of Cassandra graduating to a top level Apache project. It now has a new and improved project URL: http://cassandra.apache.org Recently you may have noticed my writing about Drizzle, but that&#8217;s not the only database system I love. I&#8217;m also a fan of Cassandra, and I&#8217;m proud to work with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://cassandra.apache.org"><img class="alignright size-full wp-image-225" title="cassandra" src="http://cdn.adrianotto.com/wp-content/uploads/2009/11/cassandra1.png" alt="" width="186" height="101" /></a>Today it&#8217;s the one month anniversary of Cassandra <a href="http://www.mail-archive.com/cassandra-dev@incubator.apache.org/msg01518.html" target="_blank">graduating</a> to a top level Apache project. It now has a new and improved project URL:<a href="http://cassandra.apache.org" target="_blank"> http://cassandra.apache.org</a></p>
<p>Recently you may have noticed <a href="http://www.rackspacecloud.com/blog/2010/03/13/rackspace-and-drizzle-its-time-to-rethink-everything/" target="_blank">my writing about Drizzle</a>, but that&#8217;s not the only database system I love. I&#8217;m also a fan of Cassandra, and I&#8217;m proud to work with the same <a href="http://www.rackspacecloud.com" target="_blank">company</a> sponsoring both projects.</p>
<p><a href="http://drizzle.org">Drizzle</a> is the way to go if you want an SQL system, and <a href="http://cassandra.apache.org" target="_blank">Cassandra</a> is the way to go if you have a huge data set or if you have a data insert/update rate that&#8217;s too high for and RDBMS to keep up with.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianotto.com/2010/03/cassandra-gets-promoted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Patch for memcached on public network</title>
		<link>http://adrianotto.com/2009/08/patch-for-memcached-on-public-network/</link>
		<comments>http://adrianotto.com/2009/08/patch-for-memcached-on-public-network/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 18:08:51 +0000</pubDate>
		<dc:creator>Adrian Otto</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://adrianotto.com/?p=104</guid>
		<description><![CDATA[If you want to know what memcached is all about, check out my recent post about memcached on The Rackspace Cloud Blog. In order to use memcached in the cloud, you may need to run it on a public network. This introduces a rash of security concerns. Originally memcached was only intended for use on [...]]]></description>
			<content:encoded><![CDATA[<p>If you want to know what memcached is all about, check out my recent <a href="http://www.rackspacecloud.com/blog/2009/07/memcached-more-cache-less-cash/" target="_blank">post about memcached</a> on The Rackspace Cloud Blog.</p>
<p>In order to use memcached in the cloud, you may need to run it on a public network. This introduces a rash of security concerns. Originally memcached was only intended for use on private networks that were not available to the public, so there was no attempt made to provide access controls in the memcached server. There are no concepts of users, passwords, or any access control at all.</p>
<p>If you do run your memcached on a public interface you could use iptables or other host-based firewall rules to limit what IP addresses can access your memcached. However, if you are using a platform hosting service that other subscribers share with you, then others may be able to make connection from the same IP address(es) as you. This means that even if you did limit access to your memcached by IP address it&#8217;s possible that some other subscriber of the same hosting service could access your memcached, and cause you all sorts of security problems.</p>
<p>Here is a custom patched memcached 1.4.0 <a href="http://c0177911.cdn.cloudfiles.rackspacecloud.com/memcached-1.4.0-2.x86_64.rpm">x86_64 RPM</a> I wrote that adds a command line option &#8216;S&#8217; to disable &#8216;flush_all&#8217; and &#8216;stats detail on&#8217; . The original 1.4 source, a SPEC file for RHEL5 and CentOS5 and the patch are both included in the <a href="http://c0177911.cdn.cloudfiles.rackspacecloud.com/memcached-1.4.0-2.src.rpm">SRPM</a>. By disabling these commands with the -S option in /etc/sysconfig/memcached (OPTIONS=&#8221;-S&#8221;) you can prevent would-be hackers from dropping all your cached items, or finding out what the names are of the keys you are using. The memcached maintainers want to do this a different way, so this patch won&#8217;t be included in the base memecahced source tree.</p>
<p>The right long-term solution is to build multi-tenant features directly into memcached. I&#8217;m aware that Dustin Sallings at <a href="http://www.northscale.com/" target="_blank">NorthScale</a> has started some work of this sort, and has a working proof of concept. It&#8217;s not yet mature, and is generally incompatible with the current release of memcached, so it&#8217;s not yet suitable for production use. The main idea is that a TCP/IP connection to memcached could be authenticated with SASL, and limited to it&#8217;s own view of what&#8217;s inside memcahced.</p>
<p>My patch does not change how memcahced works, except for what it does when you enter the commands that I&#8217;m disabling. It will be just as stable as memcached 1.4.0 without the patch. The only difference is that you won&#8217;t have the &#8216;flush_all&#8217; command, and you won&#8217;t have access to detailed stats either.</p>
<p>If you want to flush your entire cache, simply reconfigure your application to begin using a new &#8220;secret&#8221; key prefix, and you&#8217;ll have the functional equivalent of a flush_all because none of the prior cached data will be accessed by your application any more. The old data will simply expire or <a href="http://en.wikipedia.org/wiki/Cache_algorithms#Least_Recently_Used" target="_blank">LRU</a> out of the cache and be replaced by new data naturally.</p>
<p>By using a simple &#8220;secret&#8221; text prefix to all your keys, you will ensure that hackers won&#8217;t know how to access your data in the cache.  Consider prepending a reasonably long test string to the beginning of every key you store and access. Don&#8217;t make it too long, or that will multiply the number of packets required to get the data in and out of the cache, but something long enough that it won&#8217;t be easily guessed.</p>
<p><strong>This patch does not make memcached bulletproof</strong>. An attacker can still do a bunch of SET commands to fill your cache with junk, and force your hot content out. They can still irritate it with a bunch of &#8216;stats sizes&#8217; commands in a loop, or try to guess your secret prefix by randomly generating keys as a brute force attack until they find your content. For these reasons, you should only use this for storing data that&#8217;s not mission critical. There&#8217;s lots of data in this category that could really speed up your system under high load if you stored it in memcahed, but is not particularly sensitive to tampering.</p>
<p>Some have argued that this sort of a patch offers a false sense of security. I completely agree. Only use this if you know that your memcached installation will still not be secure, and that the security weakness could be exploited to ultimately hack your application. It will just be a little bit less insecure than it is without the patch.</p>
<p>I have seen memcached used in situations where only statistics are stored and accessed in memcached (instead of generating log files, statistical counters are stored in the cache). The application can do strict checking of the data it gets back from the cache, and not use it in any way that could lead to a security compromise. For example, make sure that all values returned are only numeric, and within acceptable value boundaries. An application of this sort would be appropriate with this patch.</p>
<p>I was thinking of making a better version of this patch that would allow you to specify an IP address (potentially 127.0.0.1 for example) that would have access to all commands that you define in a restricted access class. This way you could configure what IP address(es) could access what commands. Implementing this will require slowing memcached down a bit for all commands. I&#8217;ll plan to join forces with the others who are also interested in memcached multi-tenant features and produce a suitable solution that allows for secure deployments in insecure networks.</p>
]]></content:encoded>
			<wfw:commentRss>http://adrianotto.com/2009/08/patch-for-memcached-on-public-network/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced
Database Caching 1/9 queries in 0.006 seconds using disk: basic
Object Caching 382/391 objects using disk: basic
Content Delivery Network via cdn.adrianotto.com

Served from: adrianotto.com @ 2012-02-05 12:30:55 -->
