Last active
October 5, 2015 23:31
-
-
Save dalanmiller/ff3ec5be8ca87da16ab5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?xml version="1.0" encoding="UTF-8"?> | |
| <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/"> | |
| <channel> | |
| <title>RethinkDB: the open-source database for the realtime web</title> | |
| <description>News and updates from the RethinkDB team.</description> | |
| <link>http://rethinkdb.com</link> | |
| <atom:link href="http://rethinkdb.com/feed.xml" rel="self" type="application/rss+xml" /> | |
| <item> | |
| <title>Expressive ES6 features that shine in Node.js 4.0</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>The developers behind Node.js <a href="https://nodejs.org/en/blog/release/v4.0.0/">released</a> version 4.0 last week. The new | |
| version is a major update that includes significant improvements and many | |
| new language features. It is the first release to incorporate improvements | |
| from io.js, a community-driven fork that recently reintegrated with | |
| upstream Node.js.</p> | |
| <p>The io.js project emerged earlier this year when prominent Node.js | |
| contributors decided to go their own way, seeking more open governance and | |
| a more predictable release cycle. They recently resolved their differences | |
| with Joyent, the corporate steward of the Node.js project. Following the | |
| reconciliation, the upstream maintainers adopted the io.js code base.</p> | |
| <p>Node.js 4.0 includes the latest and greatest version of the V8 JavaScript | |
| runtime, which opens the door for developers to use a number of <a href="https://nodejs.org/en/docs/es6/">new | |
| language features from the ECMAScript 6</a> (ES6) specification. In | |
| previous versions of Node, important ES6 features were only available | |
| while using experimental command line flags. Some of our favorite new | |
| features supported out of the box in Node.js 4.x include arrow functions, | |
| generators, for/of loops, and template strings.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 21 Sep 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/node-4</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/node-4</guid> | |
| </item> | |
| <item> | |
| <title>StartFEST 2015 was awesome</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>Not only are the mountains of Utah great, and the people the friendliest, Provo has some things going for it when it comes to technology.</p> | |
| <p>Last week I got back to RethinkDB HQ in Mountain View from attending <a href="https://startfestival.com/">StartFEST 2015</a> hosted by <a href="https://beehivestartups.com/about/">BeehiveStartups</a> over in Provo, UT. RethinkDB was kindly offered an opportunity to do a small workshop in the developer track of the festival, and being always eager to get out in the world, I packed my bags for Utah.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 10 Sep 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/startfest-is-awesome</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/startfest-is-awesome</guid> | |
| </item> | |
| <item> | |
| <title>Compose announces RethinkDB 2.1 hosting, now with high-availability</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>Our friends at Compose <a href="https://www.compose.io/articles/rethinkdb-production-ready/">announced today</a> that they are taking the beta label off of their RethinkDB hosting, offering it as an officially-supported service that is ready for adoption in production environments. They also updated the service to use RethinkDB 2.1, which introduces support for automatic failover.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 01 Sep 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/compose-2.1</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/compose-2.1</guid> | |
| </item> | |
| <item> | |
| <title>Rethinking temperature, sensors, and Raspberry Pi</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>Getting started on your first hardware project can be difficult. Luckily these | |
| days we have things like the <a href="https://www.raspberrypi.org/">Raspberry Pi</a>. which put almost everything | |
| we need into a nice bundled package to get started on your first cool hardware | |
| project. Even better, the Raspberry Pi runs <a href="https://www.raspbian.org/">Rasbian</a>, a variant of | |
| Debian, which makes it pretty familiar with those already comfortable with | |
| popular Linux distributions. The next step is to connect a sensor and it’s | |
| definitely easier than you think. But the question always remains, once I’m | |
| collecting my data, where will I store it and how do I easily setup some sort of | |
| notification service? In this post, I’ll tell you what you need to do to connect | |
| your first sensor, get RethinkDB going on your Raspberry Pi, and push that data | |
| to all your devices using PushBullet.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 21 Aug 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/temperature-sensors-and-a-side-of-pi</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/temperature-sensors-and-a-side-of-pi</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 2.1: high availability</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>Today we’re proud to announce <strong>RethinkDB 2.1</strong> (<a href="http://rethinkdb.com/assets/images/posts/2015-08-11-forbidden-planet-poster.jpg">Forbidden | |
| Planet</a>). <a href="http://rethinkdb.com/install">Download it now</a>!</p> | |
| <p>With over <a href="https://github.com/rethinkdb/rethinkdb/issues?utf8=%E2%9C%93&q=milestone%3A2.1+">200 enhancements</a> and a major restructuring | |
| of the clustering layer to support high availability, this release is | |
| the culmination of over a year of development and many months of | |
| testing. The major features in RethinkDB 2.1 include:</p> | |
| <ul> | |
| <li><strong>Automatic failover</strong> – if a server fails or the cluster | |
| experiences a split-brain scenario, RethinkDB will automatically elect | |
| new servers and continue to operate without human intervention.</li> | |
| <li><strong>Always on</strong> – you can add and remove nodes from a live cluster | |
| without experiencing downtime.</li> | |
| <li><strong>Asynchronous APIs</strong> – asynchronous queries are now supported via | |
| EventMachine in Ruby and Twisted, Tornado, and asyncio frameworks in | |
| Python.</li> | |
| <li><strong>SSL access</strong> – official drivers now come with SSL support to make | |
| it easier to access RethinkDB clusters over the public internet.</li> | |
| <li><strong>More math commands</strong> – ReQL now supports more math operators | |
| including <code class="highlighter-rouge">floor</code>, <code class="highlighter-rouge">ceil</code>, and <code class="highlighter-rouge">round</code>.</li> | |
| </ul> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 11 Aug 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/2.1-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/2.1-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 2.1 beta: announcing automatic failover</title> | |
| <description> | |
| <media:image url="http://rethinkdb.com/assets/images/posts/2015-09-21-node-4-es6.png" type="image/png"/> | |
| <div><p>RethinkDB 2.1 beta is now available for testing. <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v2.1.0-0BETA1">Download</a> it now!</p> | |
| <p>The upcoming 2.1 release will introduce <a href="https://github.com/rethinkdb/rethinkdb/releases">important improvements</a>, | |
| including support for automatic failover. Although we’re still hard at | |
| work on the finishing touches that will make the new features ready | |
| for production use, the beta offers an opportunity to get an early | |
| look.</p> | |
| <p>The 2.1 beta release is a culmination of over a year of development | |
| effort. It satisfies three major requirements:</p> | |
| <ul> | |
| <li>If a primary replica fails, RethinkDB will automatically fail over | |
| to another replica without human intervention.</li> | |
| <li>You can reshard your tables live with only a few seconds of | |
| unavailability when the server switches over a shard to a new | |
| server.</li> | |
| <li>The RethinkDB administration API remains the same. You don’t need to | |
| learn anything to take advantage of the new features.</li> | |
| </ul> | |
| <p>Automatic failover increases the reliability of RethinkDB clusters, reducing | |
| the risk of downtime when individual servers fail or drop out of the network. | |
| When a server with a primary shard experiences failure, the servers with | |
| remaining replicas elect an acting primary to take its place until the wayward | |
| server is either restored or permanently removed from the table configuration. | |
| As long as a majority of replicas remain operational to elect an acting | |
| primary, the loss of a primary shard will no longer compromise database | |
| availability.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 16 Jul 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-2.1-beta</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-2.1-beta</guid> | |
| </item> | |
| <item> | |
| <title>Using PassportJS OAuth with RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-06-16-oauth-banner.png" /> | |
| ]]> | |
| <div><p>I’ve run into many people who have problems setting up authentication on their | |
| Node.js applications. Even with a library as great as <a href="http://passportjs.org/">Passport</a>, it | |
| can be tough to setup authentication in your app. Yet, while it’s tempting to | |
| avoid it, authentication is essential for many types of applications.</p> | |
| <p>In this short tutorial, we’ll go over how to set up a simple app that uses the | |
| <a href="http://en.wikipedia.org/wiki/OAuth">OAuth</a> standard and the <a href="http://passportjs.org/">Passport</a> Node.js library for | |
| authentication. OAuth is an open standard that lets a user ‘secure and | |
| delegated access’ using an account from a major trusted site. Using OAuth, a | |
| developer can create an application that lets users sign in with their GitHub, | |
| Twitter, or Facebook accounts rather than forcing them to create yet another | |
| account. Passport is a developer-friendly abstraction for setting up OAuth | |
| authentication and supports many major companies out of the box. It takes away | |
| a lot of the boilerplate behind user authentication.</p> | |
| <p>In this post, we’ll use a boilerplate repo to get all the hard parts of | |
| authentication out of the way. This is the easiest way to get started with | |
| Passport and OAuth! Users will be able to login, see their username and | |
| avatar, and logout. That’s it. By keeping the functionality of the app as | |
| simple as possible, we can focus on just the authentication.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 08 Jul 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/passport-oauth-with-rethinkdb</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/passport-oauth-with-rethinkdb</guid> | |
| </item> | |
| <item> | |
| <title>Go driver for RethinkDB hits 1.0, production-ready</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-07-02-go-banner.png" /> | |
| ]]> | |
| <div><p><a href="https://twitter.com/_dancannon">Dan Cannon</a>’s <a href="https://github.com/dancannon/gorethink">GoRethink</a> project provides a RethinkDB driver for | |
| the Go language. Earlier this week, Dan <a href="https://github.com/dancannon/gorethink/releases/tag/v1.0.0">released GoRethink 1.0</a> | |
| and announced that the driver is now ready for use in production | |
| environments.</p> | |
| <p>GoRethink is among the most popular and well-maintained third-party client | |
| drivers for RethinkDB. It supports the latest RethinkDB features while | |
| offering clean integration between ReQL and Go’s native syntax. In | |
| addition to standard driver functionality, GoRethink also includes a | |
| number of advanced features like connection pooling.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 02 Jul 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/go-production-ready</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/go-production-ready</guid> | |
| </item> | |
| <item> | |
| <title>Getting started with RethinkDB and Python 3</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><em>This post originally appeared on <a href="http://www.giantflyingsaucer.com/blog/?p=5606">Giant Flying Saucer</a>, Chad Lung’s blog.</em></p> | |
| <p>I’ve been keeping an eye on RethinkDB for a while now and recently began | |
| working with it. There is a lot to like about RethinkDB like the ability | |
| to easily cluster and scale your deployment but what I’m going to focus on | |
| today is something called <a href="http://rethinkdb.com/docs/changefeeds/python/">Changefeeds</a>. I’ll start this blog article | |
| off with installing a development server running RethinkDB and then move | |
| onto a quick tutorial. From there we will look at Changefeeds.</p> | |
| <p>Like some of my other articles I’ve created a <a href="https://github.com/chadlung/vagrant-rethinkdb">Github repo</a> with the | |
| scripts needed to get a Vagrant instance running a single RethinkDB node. | |
| Simply go to the repo, clone it, and follow the <a href="https://github.com/chadlung/vagrant-rethinkdb/blob/master/README.md">instructions</a>.</p> | |
| <p>Once the Vagrant RethinkDB server is running you’ll want to create a | |
| Python 3 project folder to work out of. To see how I usually setup my | |
| project folders you can see <a href="http://www.giantflyingsaucer.com/blog/?p=5082">this article</a>.</p> | |
| <p>Make sure to install the <a href="http://rethinkdb.com/docs/install-drivers/python/">RethinkDB Python client</a> (version 1.14 and | |
| above works with Python 3):</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="gp">$ </span>pip install rethinkdb | |
| </code></pre> | |
| </div> | |
| <p>At this point I’ll assume you have your Vagrant based RethinkDB server | |
| running and Python 3 project set up. Let’s start with a real simple | |
| example to create a new database and a table to test with.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 19 Jun 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/chad-lung-python3</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/chad-lung-python3</guid> | |
| </item> | |
| <item> | |
| <title>Hands-on with deepstream.io: build realtime apps with less backend code</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-06-17-deepstream-banner.png" /> | |
| ]]> | |
| <div><p>The developers at <a href="http://www.hoxton-one.com/">Hoxton One</a> recently released <a href="http://deepstream.io/">deepstream</a>, a new | |
| open source framework for realtime web application development. The | |
| framework, which is built with <a href="https://nodejs.org/">Node.js</a> and <a href="https://github.com/Automattic/engine.io">Engine.io</a>, helps | |
| developers build frontend web applications that perform realtime updates | |
| while requiring minimal backend code.</p> | |
| <p>The deepstream framework comes with a client library for the browser that | |
| lets the developer create and update data records on the fly. The client | |
| library relays updates to the server, which propagates the new data to | |
| other subscribed clients. The developer doesn’t have to write any | |
| specialized backend code to handle the changes or propagate the events.</p> | |
| <p>The developers behind deepstream provide an optional RethinkDB data | |
| connector, which lets the framework use RethinkDB for data persistence. As | |
| the frontend client updates records, the deepstream backend stores the | |
| changes in RethinkDB documents.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 17 Jun 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/deepstream</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/deepstream</guid> | |
| </item> | |
| <item> | |
| <title>Data science on the iPad with RethinkDB and Pythonista</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-06-11-pythonista-banner.png" /> | |
| ]]> | |
| <div><p><a href="http://omz-software.com/pythonista/">Pythonista</a> is an iOS application that brings Python development to | |
| Apple’s mobile devices. It includes a built-in Python runtime, an | |
| interactive REPL console, and a text editor with features like syntax | |
| highlighting and autocompletion. It also comes with its own canvas system | |
| and user interface toolkit, offering developers a way to build games and | |
| simple graphical applications.</p> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2015-06-11-pythonista-screen.png" /></p> | |
| <p>In addition to the standard Python libraries, Pythonista bundles some | |
| useful extras that extend its functionality. For example, it comes with | |
| <a href="http://www.numpy.org/">NumPy</a> and <a href="http://matplotlib.org/">matplotlib</a>, which support scientific computing and | |
| advanced graphing. It also comes with a set of libraries that expose | |
| native platform and device capabilities, including geolocation and the | |
| system camera.</p> | |
| <p>Used to its full potential, Pythonista is a surprisingly capable | |
| environment for mobile data science. I can use Pythonista on my iPad to | |
| crunch numbers at the coffee shop or on my living room couch. I couldn’t | |
| resist the temptation to add RethinkDB to the mix, giving me backend | |
| persistence and expressive queries.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 12 Jun 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/pythonista</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/pythonista</guid> | |
| </item> | |
| <item> | |
| <title>Batch image uploading with Amazon S3 and RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-06-09-s3-batch-upload.png" /> | |
| ]]> | |
| <div><p>Many applications provide a way to upload images, offering users a | |
| convenient way to share photos and other rich content. Driven in part by | |
| the ubiquity of built-in cameras on smartphones, image uploading is | |
| practically expected in any application with social or messaging | |
| features. Fortunately, cloud-based hosting services like Amazon’s S3 can | |
| shoulder the burden of storing large amounts of user-generated content.</p> | |
| <p>Of course, you can also use RethinkDB to store thumbnails, important image | |
| metadata, and application-specific details about your S3 uploads. In this | |
| tutorial, I’ll demonstrate how to handle batch image uploading with Amazon | |
| S3 and RethinkDB. The demo application puts full-sized images in an Amazon | |
| S3 bucket while using RethinkDB to store image metadata and small | |
| thumbnails. I’m also going to show you some useful techniques for building | |
| a good frontend image uploading experience on the web, featuring | |
| drag-and-drop support and a live progress bar.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 11 Jun 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/s3-batch-upload</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/s3-batch-upload</guid> | |
| </item> | |
| <item> | |
| <title>Building a realtime API with RethinkDB and Pushpin</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><em>Justin Karneges is the founder of <a href="https://fanout.io/">Fanout</a>. This post originally appeared on | |
| the <a href="http://blog.fanout.io/2015/05/20/building-a-realtime-api-with-rethinkdb/">Fanout blog</a>.</em></p> | |
| <p><a href="http://rethinkdb.com/">RethinkDB</a> is a modern NoSQL database that makes it easy to build realtime | |
| web services. One of its standout features is called <a href="http://rethinkdb.com/docs/changefeeds">Changefeeds</a>. | |
| Applications can query tables for ongoing changes, and RethinkDB will push any | |
| changes to applications as they happen. The Changefeeds feature is interesting | |
| for many reasons:</p> | |
| <ul> | |
| <li>You don’t need a separate message queue to wake up workers that operate on new data.</li> | |
| <li>Database writes made from anywhere will propagate out as changes. Use the | |
| RethinkDB dashboard to muck with data? Run a migration script? Listeners will | |
| hear about it.</li> | |
| <li>Filtering/squashing of change events within RethinkDB. In many cases it may | |
| be easier to filter events using ReQL than using a message queue and | |
| filtering workers.</li> | |
| </ul> | |
| <p>This makes RethinkDB a compelling part of a realtime web service stack. In this | |
| article, we’ll describe how to use RethinkDB to implement a leaderboard API | |
| with realtime updates. Emphasis on <em>API</em>. Unlike other leaderboard examples you | |
| may have seen elsewhere, the focus here will be to create a clean API | |
| definition and use RethinkDB as part of the implementation. If you’re not sure | |
| what it means for an API to have realtime capabilities, check out <a href="http://blog.fanout.io/2015/04/02/realtime-api-design-guide/">this | |
| guide</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 05 Jun 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/building-a-realtime-api</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/building-a-realtime-api</guid> | |
| </item> | |
| <item> | |
| <title>Build a realtime liveblog with RethinkDB and PubNub</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-05-20-realtime-blog-pubnub.png" /> | |
| ]]> | |
| <div><p>RethinkDB provides a persistence layer for realtime web applications, but | |
| the rest of the stack is up to you. A number of different frameworks and | |
| services are available to help you convey individual realtime updates to | |
| your application’s frontend.</p> | |
| <p>In this blog post, I’ll demonstrate to use RethinkDB with <a href="http://www.pubnub.com/">PubNub</a>, a | |
| service that provides hosting for realtime message streams. You can build | |
| realtime web application with PubNub and RethinkDB, taking advantage of | |
| PubNub’s cloud infrastructure to simplify development and scalability. To | |
| demonstrate how you can use PubNub with RethinkDB changefeeds, I’ll show | |
| you how to build a simple liveblog application.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 20 May 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-pubnub</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-pubnub</guid> | |
| </item> | |
| <item> | |
| <title>Use RethinkDB with LoopBack and Meteor</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Now that RethinkDB is ready for adoption in production environments, a | |
| growing number of developers are working to integrate it with their favorite | |
| backend frameworks. We’ve seen several particularly promising integrations | |
| emerge over the past few weeks.</p> | |
| <h1 id="meteor-integration">Meteor integration</h1> | |
| <p>Meteor developer <a href="https://github.com/Slava">Slava Kim</a> published a <a href="https://www.youtube.com/watch?v=05R-TDP0Ltc">video</a> on YouTube that | |
| demonstrates his proof-of-concept <a href="https://github.com/Slava/meteor-rethinkdb">bridge between Meteor and | |
| RethinkDB</a>. Meteor is a full-stack JavaScript framework for realtime | |
| application development. One of Meteor’s key features is that it gives | |
| developers uniform methods for querying data on both the client and server.</p> | |
| <iframe width="640" height="430" src="https://www.youtube.com/embed/05R-TDP0Ltc?rel=0&showinfo=0" frameborder="0" allowfullscreen=""></iframe> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 11 May 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/meteor-loopback-integration</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/meteor-loopback-integration</guid> | |
| </item> | |
| <item> | |
| <title>Drive iOS push notifications with RethinkDB changefeeds</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-04-28-push-notifications-banner.png" /> | |
| ]]> | |
| <div><p>Push notifications provide a useful bridge between web applications and mobile | |
| clients, enabling a more seamless user experience across screens. RethinkDB | |
| changefeeds make it easy for developers to add push notification support to | |
| existing applications–using an event-driven approach that doesn’t require the | |
| developer to add much additional plumbing.</p> | |
| <p>In this blog post, I’ll demonstrate how to wire up RethinkDB changefeeds to iOS | |
| push notifications, conveying realtime updates to iPhone users. For my demo, I | |
| built a simple <a href="https://github.com/rethinkdb/rethinkdb-mobile-push">location checkin app</a> that takes advantage of GPS on the | |
| user’s mobile device and RethinkDB’s geospatial indexing on the backend. When a | |
| user checks in, the backend sends a push notification to every user whose last | |
| checkin was made within 100 miles of the new checkin. A map view in the app | |
| displays pins, marking all the nearby checkins.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 04 May 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/ios-push-notifications</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/ios-push-notifications</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 2.0: production ready</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-04-14-2.0-release-banner.png" /> | |
| ]]> | |
| <div><p>We’re proud to announce that after five years of development, | |
| RethinkDB is ready for production. <a href="http://rethinkdb.com/install">Download</a> RethinkDB | |
| 2.0 (<a href="https://www.youtube.com/watch?v=y_1iT_GmHTE">Yojimbo</a>) now!</p> | |
| <p>We designed RethinkDB from the ground up to make building and | |
| scaling realtime apps dramatically easier. The cumulative | |
| development effort behind the project includes more than <a href="https://github.com/rethinkdb/rethinkdb/issues?q=is%3Aissue+is%3Aclosed">2,000 | |
| improvements</a>, | |
| implemented across 16 major releases. Our GitHub repository has | |
| nearly 30,000 commits, spanning the lifetime of the project.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 14 Apr 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/2.0-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/2.0-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 2.0 drivers: native support for Tornado and EventMachine</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Asynchronous web frameworks like <a href="http://www.tornadoweb.org/en/stable/">Tornado</a> and <a href="https://github.com/eventmachine/eventmachine">EventMachine</a> simplify | |
| realtime application development in Python and Ruby. They support an | |
| event-driven programming model that fits the realtime web, making it easy to | |
| use WebSocket connections without blocking. You can plug in RethinkDB | |
| changefeeds—which allow you to subscribe to changes on database | |
| queries—to extend that event-driven model to your persistence layer, | |
| offering a full backend stack for pushing live updates to your frontend.</p> | |
| <p>The upcoming RethinkDB 2.0 release introduces support for using Tornado and | |
| EventMachine to perform asynchronous queries in the Python and Ruby client | |
| drivers. When we <a href="http://rethinkdb.com/blog/1.16-release">announced the availability</a> of the RethinkDB 2.0 release | |
| candidate last week, the updated client drivers weren’t quite ready yet. Today, | |
| we’re issuing fresh RethinkDB 2.0 RC client drivers that fully incorporate the | |
| new functionality (<a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v2.0.0-0RC1">download them here</a>).</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 01 Apr 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/async-drivers</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/async-drivers</guid> | |
| </item> | |
| <item> | |
| <title>Announcing the RethinkDB 2.0 release candidate</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-03-19-2rc-banner.png" /> | |
| ]]> | |
| <div><p>The RethinkDB 2.0 release candidate is <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v2.0.0-0RC1">now available for testing</a>. | |
| RethinkDB 2.0 is designed to make building and scaling realtime apps | |
| dramatically easier. The upcoming 2.0 launch is an important milestone, marking | |
| our very first production-ready release. We’ll announce commercial support | |
| options and other services alongside the release.</p> | |
| <p>After five years of development, RethinkDB is ready for widespread adoption | |
| with the upcoming 2.0 release. The cumulative development effort behind the | |
| project includes more than <a href="https://github.com/rethinkdb/rethinkdb/issues?q=is%3Aissue+is%3Aclosed">2,000 improvements</a>, implemented across 16 major | |
| releases. Our most recent release, <a href="http://rethinkdb.com/blog/1.16-release/">RethinkDB 1.16</a>, dramatically expanded | |
| the <code class="highlighter-rouge">changes</code> command and introduced <a href="http://rethinkdb.com/blog/realtime-web/">powerful support for building realtime | |
| web applications</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 20 Mar 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/2.0-release-candidate</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/2.0-release-candidate</guid> | |
| </item> | |
| <item> | |
| <title>Join us online for a live RethinkDB workshop, hosted by Platzi</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-03-11-platzi-banner.jpg" /> | |
| ]]> | |
| <div><p>Join us Saturday, March 14 for a live RethinkDB training course. The two-hour | |
| workshop, taught by RethinkDB evangelist Ryan Paul and hosted online by our | |
| friends at Platzi, will teach you how to build realtime web applications with | |
| RethinkDB. The course is available for free—all you have to do is sign | |
| up.</p> | |
| <p>The course includes:</p> | |
| <ul> | |
| <li>An introduction to RethinkDB and distributed databases</li> | |
| <li>A hands-on overview of ReQL, the RethinkDB query language</li> | |
| <li>A guided intro to building realtime apps with RethinkDB and Node.js</li> | |
| <li>An introduction to RethinkDB clustering and scalability best practices</li> | |
| </ul> | |
| <p>Attend live to ask questions and participate interactively. If you can’t make | |
| it for the live session, you will be able to watch the recorded video later.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 11 Mar 2015 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/platzi-course</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/platzi-course</guid> | |
| </item> | |
| <item> | |
| <title>Docker introduces official RethinkDB repository</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-03-06-docker-banner.png" /> | |
| ]]> | |
| <div><p>Our friends at Docker recently added an <a href="https://registry.hub.docker.com/_/rethinkdb/">official RethinkDB repository</a> to | |
| the Docker Hub. They announced the new repo in a <a href="https://blog.docker.com/2015/03/thirteen-new-official-repositories-added-in-january-and-february/">blog post</a> yesterday, | |
| highlighting RethinkDB alongside several other prominent open source projects.</p> | |
| <p>Docker is a tool that helps automate deployments. It takes advantage of | |
| platform-level container technology to make it easy to compose isolated | |
| software components in a reproducible way. A growing number of | |
| infrastructure-related tools, ranging from self-hosted PaaS environments to | |
| cluster management systems, are built around the Docker ecosystem.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 06 Mar 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/docker-repo</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/docker-repo</guid> | |
| </item> | |
| <item> | |
| <title>We're sponsoring AirPair's developer writing competition</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-03-04-airpair.png" /> | |
| ]]> | |
| <div><p>We’re teaming up with <a href="https://www.airpair.com/">AirPair</a> to support their $100k developer writing | |
| competition. We’ve sponsored a $500 cash prize to honor the best RethinkDB post | |
| submitted to the contest.</p> | |
| <p>AirPair, which provides a service that connects developers with experts for | |
| live programming sessions, recently introduced an experimental set of <a href="https://www.airpair.com/social-authoring">social | |
| authoring features</a> that make it possible for authors and readers to | |
| collaborate on content. AirPair’s social authoring platform uses a GitHub-based | |
| workflow that involves forking and pull requests. They launched a <a href="https://www.airpair.com/100k-writing-competition">writing | |
| competition</a> to highlight the experiment and encourage developers to give it | |
| a try.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 04 Mar 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/airpair-writing-contest</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/airpair-writing-contest</guid> | |
| </item> | |
| <item> | |
| <title>Build an IRC bot in Go with RethinkDB changefeeds</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><a href="https://github.com/dancannon">Dan Cannon’s</a> project, <a href="https://github.com/dancannon/gorethink">GoRethink</a>, is among the most popular and | |
| well-maintained third-party client drivers for RethinkDB. Dan recently updated | |
| the driver to make it compatible with RethinkDB 1.16, adding support for | |
| changefeeds. The language’s native concurrency features make it easy to consume | |
| changefeeds in a realtime Go application.</p> | |
| <p>To see GoRethink in action, I built a <a href="https://gist.github.com/segphault/e6c58469f17259cea1ca">simple IRC bot</a> that monitors a | |
| RethinkDB cluster and sends notifications to an IRC channel when issues are | |
| detected. I built the bot with Go, using Dan’s driver and an IRC client library | |
| called <a href="https://github.com/fluffle/goirc">GoIRC</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 11 Feb 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/go-irc-bot</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/go-irc-bot</guid> | |
| </item> | |
| <item> | |
| <title>A realtime RethinkDB cluster monitoring app with live graphs</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>When we announced the <a href="http://rethinkdb.com/blog/1.16-release">RethinkDB 1.16</a> last week, we showed how you can use | |
| <a href="http://rethinkdb.com/docs/changefeeds/javascript/">changefeeds</a> with the new <a href="http://rethinkdb.com/docs/administration-tools/">ReQL-based admin API</a> to monitor the status of | |
| a RethinkDB cluster. In this blog post, I’m going to expand on that example and | |
| show you how I used the same underlying RethinkDB features to build a realtime | |
| cluster monitoring dashboard with live graphs—much like the dashboard | |
| built into the RethinkDB web UI.</p> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2015-02-04-clusterstatus.png" /></p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 04 Feb 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/realtime-cluster-monitoring</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/realtime-cluster-monitoring</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.16: cluster management API, realtime push</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-01-30-1.16-release-banner.png" /> | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.16</strong> (<a href="https://www.youtube.com/watch?v=soEFK6PSKEY">Stand by Me</a>). | |
| <a href="http://rethinkdb.com/docs/install/">Download it now!</a></p> | |
| <p>The 1.16 release is a precursor to the upcoming 2.0 release, and is the biggest | |
| RethinkDB release to date with over <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v1.16.0-1">300 enhancements</a>. This release | |
| includes two exciting new features: a comprehensive API for large cluster | |
| management, and realtime push functionality that <a href="http://rethinkdb.com/blog/realtime-web/">dramatically simplifies</a> | |
| the development of realtime web apps.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 30 Jan 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/1.16-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.16-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.16 webcast: learn about upcoming features</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2015-01-29-webcast-title-card.png" /> | |
| ]]> | |
| <div><p>Join us tomorrow (Friday, January 30th) for a live webcast at 1:30PM PT. Daniel | |
| Mewes, RethinkDB’s director of engineering, and systems engineer Tim Maxwell | |
| will introduce some of the new features included in our upcoming 1.16 release.</p> | |
| <p>The webcast will offer a first look at RethinkDB’s new comprehensive cluster | |
| management API, which makes it easy to configure sharding and replication with | |
| ReQL expressions. You’ll also get a hands-on introduction to RethinkDB’s | |
| <a href="http://rethinkdb.com/blog/realtime-web/">realtime push functionality</a>, | |
| demonstrating how RethinkDB can dramatically simplify the development of | |
| realtime web apps. The webcast will conclude with a live Q&A segment, where | |
| you’ll have a chance to query the RethinkDB team in realtime.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 29 Jan 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/1.16-webcast</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.16-webcast</guid> | |
| </item> | |
| <item> | |
| <title>Advancing the realtime web</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Over the past few months the team at RethinkDB has been working on a project to | |
| make building modern, realtime apps dramatically easier. The upcoming features | |
| are the start of an exciting new database access model – instead of polling | |
| the database for changes, the developer can tell RethinkDB to continuously push | |
| updated query results to applications in realtime.</p> | |
| <p>This work started as an innocuous feature to help developers integrate | |
| RethinkDB with other realtime systems. A <a href="http://rethinkdb.com/blog/1.13-release">few releases ago</a> we shipped | |
| <a href="http://rethinkdb.com/docs/changefeeds">changefeeds</a> – a way to subscribe to change notifications in the database. | |
| Whenever a document changes in a table, the server pushes a notification | |
| describing the change to subscribed clients. You can subscribe to changes on a | |
| table like this:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="n">r</span><span class="o">.</span><span class="n">table</span><span class="p">(</span><span class="s">'accounts'</span><span class="p">)</span><span class="o">.</span><span class="n">changes</span><span class="p">()</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">conn</span><span class="p">)</span> | |
| </code></pre> | |
| </div> | |
| <p>Originally we intended this feature to help developers push data from RethinkDB | |
| to specialized data stores like ElasticSearch and message systems like | |
| RabbitMQ, but the release generated enormous excitement we didn’t expect. | |
| Digging deeper, we saw that many web developers used changefeeds as a solution | |
| to a much broader problem – how do you adapt the database to push realtime | |
| data to applications?</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 27 Jan 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/realtime-web</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/realtime-web</guid> | |
| </item> | |
| <item> | |
| <title>Query RethinkDB tables from PostgreSQL with foreign data wrappers</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Rick Otten (<a href="https://github.com/rotten">@rotten</a>) recently released a <a href="https://github.com/wilsonrmsorg/rethinkdb-multicorn-postgresql-fdw">foreign data wrapper</a> for | |
| PostgreSQL that provides a bridge to RethinkDB. The wrapper makes it possible | |
| to expose individual tables from a RethinkDB database in PostgreSQL, enabling | |
| users to access their RethinkDB data with with SQL queries.</p> | |
| <p>The wrapper could prove especially useful in cases where a developer wants to | |
| incorporate RethinkDB into an existing application built on PostgreSQL, taking | |
| advantage of RethinkDB features like changefeeds to easily add realtime | |
| updates. You could, for example, use RethinkDB to store and propagate realtime | |
| events while continuing to use PostgreSQL for things like account management | |
| and other data persistence.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 22 Jan 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/postgres-foreign-data-wrapper</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/postgres-foreign-data-wrapper</guid> | |
| </item> | |
| <item> | |
| <title>Using RethinkDB with io.js: exploring ES6 generators and the future of JavaScript</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>A group of prominent Node.js contributors recently launched a community-driven | |
| fork called <a href="https://iojs.org/">io.js</a>. One of the most promising advantages of the new fork is | |
| that it incorporates a much more recent version of the V8 JavaScript runtime. | |
| It happens to support a range of useful <a href="http://git.io/es6features">ECMAScript 6</a> (ES6) features right | |
| out of the box.</p> | |
| <p>Although io.js is still too new for production deployment, I couldn’t resist | |
| taking it for a test drive. I used io.js and the experimental <a href="https://github.com/neumino/rethinkdbdash">rethinkdbdash</a> | |
| driver to get an early glimpse at the future of ES6-enabled RethinkDB | |
| application development.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 16 Jan 2015 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdbdash-iojs</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdbdash-iojs</guid> | |
| </item> | |
| <item> | |
| <title>Hands-on with Remodel: a new Python ODM for RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-12-10-remodel_blog.png" /> | |
| ]]> | |
| <div><p>This week, <a href="https://github.com/linkyndy">Andrei Horak</a> released <a href="https://github.com/linkyndy/remodel">Remodel</a>, a new Python-based object | |
| document mapping (ODM) library for RethinkDB. Remodel simplifies RethinkDB | |
| application development by automating much of the underlying logic that comes | |
| into play when working with relations.</p> | |
| <p>Remodel users create high-level model objects and rely on a set of simple class | |
| attributes to define relationships. The framework then uses the model objects | |
| to generate tables and indexes. It abstracts away the need to do manual work | |
| like performing join queries or populating relation attributes when inserting | |
| new items. Remodel also has built-in support for connection pooling, which | |
| obviates the need to create and manage connections. In this brief tutorial, | |
| I’ll give you a hands-on look at Remodel and show you how to use it in a web | |
| application.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 10 Dec 2014 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/remodel</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/remodel</guid> | |
| </item> | |
| <item> | |
| <title>Make beautiful charts with RethinkDB queries and Charted.co</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>While building applications with RethinkDB, I often find cases where I want to | |
| be able to produce simple visualizations to help me better understand my data. | |
| Ideally, I’d like to take the output of a simple query and see what it looks | |
| like in a graph with as little work as possible. A new project recently | |
| introduced by the developers at Medium offers a compelling solution.</p> | |
| <p>Medium’s product science team <a href="https://medium.com/data-lab/introducing-charted-15161b2cd71e">built a lightweight web application</a> called | |
| <a href="http://www.charted.co/">Charted</a> that makes it easy for users to generate and share graphs. As | |
| input, the user provides a URL that points to CSV data. Charted processes the | |
| data and produces simple graphs with a clean and elegant design. No | |
| configuration is needed, though it allows the user to choose between bar and | |
| line formats and customize certain aspects of the output.</p> | |
| <p><img style="border: thin solid #eee;" src="http://rethinkdb.com/assets/images/posts/2014-12-05-charted.png" /></p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 05 Dec 2014 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/csv-charted</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/csv-charted</guid> | |
| </item> | |
| <item> | |
| <title>A tasty RethinkDB video roundup for Thanksgiving</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-11-26-thanksgiving.png" /> | |
| ]]> | |
| <div><p>Thanksgiving is almost here: it is time to configure your dinner tables for | |
| family clusters and prepare some turkey for batch insertion of stuffing. To | |
| show how thankful we are for our amazing community, we put together this tasty | |
| video playlist with our best leftovers from October and November. It will help | |
| keep you entertained while you try not to succumb to the inevitable post-turkey | |
| tryptophan coma. Enjoy!</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 26 Nov 2014 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/thanksgiving-video-roundup</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/thanksgiving-video-roundup</guid> | |
| </item> | |
| <item> | |
| <title>CatThink: see the cats of Instagram in realtime with RethinkDB and Socket.io</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-11-05-cat-instagram.png" /> | |
| ]]> | |
| <div><p>Modern frameworks and standards make it easy for developers to build web | |
| applications that support realtime updates. You can push the latest data to | |
| your users, offering a seamless experience that results in higher engagement | |
| and better usability. With the right architecture on the backend, you can put | |
| polling out to pasture and liberate your users from the tyranny of the refresh | |
| button.</p> | |
| <p>In this tutorial, I’ll show you how I built a realtime Instagram client for the | |
| web. The application, which is called CatThink, displays a live feed of new | |
| Instagram pictures that have the <code class="highlighter-rouge">#catsofinstagram</code> tag. Why cats of Instagram? | |
| Because it’s one of the photo service’s most popular and beloved tags. People | |
| on the internet really, really like cats. Or maybe we just think we do because | |
| our feline companions have <a href="http://en.wikipedia.org/wiki/Toxoplasmosis">reprogrammed us with brain parasites</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 05 Nov 2014 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/cats-of-instagram</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/cats-of-instagram</guid> | |
| </item> | |
| <item> | |
| <title>Deploying RethinkDB applications with Docker using Dokku</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><a href="http://progrium.com/blog/2013/06/19/dokku-the-smallest-paas-implementation-youve-ever-seen/">Dokku</a> is a simple application deployment system built on Docker. It gives | |
| you a Heroku-like PaaS environment on your own Linux system, enabling you to | |
| deploy your applications with git. Dokku automatically configures the proper | |
| application runtime environment, installs all of the necessary dependencies, | |
| and runs each application in its own isolated container. You can easily run | |
| Dokku on your own server or an inexpensive Linux VPS.</p> | |
| <p>The <a href="https://github.com/stuartpb/dokku-rethinkdb-plugin">RethinkDB Dokku plugin</a>, created by <a href="https://github.com/stuartpb">Stuart Bentley</a>, lets | |
| developers create containerized RethinkDB instances for their Dokku-deployed | |
| apps. I’ve found that Dokku is a really convenient way to share my RethinkDB | |
| demos while I’m prototyping without having to manually deploy and configure | |
| each one. In this short tutorial, I’ll show you how you can set up Dokku and | |
| install the plugin on a <a href="https://www.digitalocean.com/">Digital Ocean</a> droplet.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 23 Oct 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/dokku-deployment</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/dokku-deployment</guid> | |
| </item> | |
| <item> | |
| <title>Upcoming RethinkDB events for October and November</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Join the RethinkDB team at the following upcoming events:</p> | |
| <h2 id="rethinkdb-at-html5devconf">RethinkDB at HTML5DevConf</h2> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2014-10-17-html5con.png" style="float: right; margin: 0px 40px;" /></p> | |
| <p><em>October 21-22</em>, <a href="http://html5devconf.com/venue.html">Moscone Center</a></p> | |
| <p>RethinkDB will be in San Francisco next week for <a href="http://html5devconf.com/">HTML5DevConf</a>, a popular | |
| event for frontend web developers. Conference attendees will be able to find us | |
| at table 29 in the conference expo hall. You can see our latest demo apps and | |
| meet RethinkDB co-founder, Slava Akhmechet. We will also have some fun | |
| RethinkDB goodies on hand to give away, including shirts and stickers.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 17 Oct 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/october-events</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/october-events</guid> | |
| </item> | |
| <item> | |
| <title>Hosted RethinkDB deployments in the cloud now available from Compose</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-10-14-compose.png" /> | |
| ]]> | |
| <div><p>We are pleased to announce that our friends at | |
| <a href="https://www.compose.io/">Compose</a> now offer RethinkDB hosting in the cloud. | |
| Their new service lets you get a managed RethinkDB deployment in a matter of | |
| seconds, providing a fast and easy way to start working on your RethinkDB | |
| project without the overhead of managing your own infrastructure or | |
| provisioning your own cluster.</p> | |
| <p>Compose, formerly known as MongoHQ, is a dedicated Database as a Service | |
| (DBaaS) company. RethinkDB is the third database in their product lineup, | |
| launching alongside their existing support for MongoDB and Elasticsearch. | |
| Available today as a public beta, their hosted RethinkDB deployments come with | |
| automatic scaling and backups.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 15 Oct 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/compose</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/compose</guid> | |
| </item> | |
| <item> | |
| <title>BeerThink: infinite scrolling in a mobile app with Ionic, Node.js, and RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Developers often use pagination to display large collections of data. An | |
| application can fetch content in batches as needed, presenting a fixed number | |
| of records at a time. On the frontend, paginated user interfaces typically | |
| provide something like “next” and “previous” navigation buttons so that users | |
| can move through the data set. In modern mobile apps, it is increasingly common | |
| to implement an infinite scrolling user interface on top of paginated data. As | |
| the user scrolls through a list, the application fetches and appends new | |
| records.</p> | |
| <p>To demonstrate the use of pagination in RethinkDB applications, I made a simple | |
| mobile app called <a href="https://github.com/rethinkdb/beerthink">BeerThink</a>. It displays a list of beers and breweries, | |
| providing a detailed summary when the user taps an item. The app uses a data | |
| dump from the <a href="https://github.com/brewdega/open-beer-database-dumps">Open Beer Database</a>, which contains information about roughly | |
| 4,400 beers and 1,200 breweries. I converted the data to JSON so that it is | |
| easy to import into RethinkDB. There are two tables, one for beers and one for | |
| breweries. The application uses RethinkDB’s support for table joins to | |
| correlate the beers with their respective breweries.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 07 Oct 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/beerthink</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/beerthink</guid> | |
| </item> | |
| <item> | |
| <title>Building an earthquake map with RethinkDB and GeoJSON</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><a href="http://rethinkdb.com/blog/1.15-release/">RethinkDB 1.15</a> introduced new <a href="http://rethinkdb.com/docs/geo-support/javascript/">geospatial features</a> that can help you | |
| plot a course for smarter location-based applications. The database has new | |
| geographical types, including points, lines, and polygons. Geospatial queries | |
| makes it easy to compute the distance between points, detect intersecting | |
| regions, and more. RethinkDB stores geographical types in a format that | |
| conforms with the GeoJSON standard.</p> | |
| <p>Developers can take advantage of the new geospatial support to simplify the | |
| development of a wide range of potential applications, from location-aware | |
| mobile experiences to specialized GIS research platforms. This tutorial | |
| demonstrates how to build an earthquake map using RethinkDB’s new geospatial | |
| support and an open data feed hosted by the USGS.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 30 Sep 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/earthquake-geojson</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/earthquake-geojson</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.15: Geospatial queries</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-09-25-1.15-release-banner.png" /> | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.15</strong> (<a href="https://www.youtube.com/watch?v=zmr1iSG3RTA">Lawrence of Arabia</a>). | |
| <a href="http://rethinkdb.com/docs/install">Download it now!</a></p> | |
| <p>The 1.15 release includes over <a href="https://github.com/rethinkdb/rethinkdb/issues?q=is%3Aissue+milestone%3A1.15+is%3Aclosed">50 enhancements</a> and introduces geospatial | |
| queries to RethinkDB. This has been <em>by far</em> the <a href="https://github.com/rethinkdb/rethinkdb/issues/1158">most requested | |
| feature</a> by RethinkDB users. In addition, we’ve sped up many queries | |
| dramatically by lazily deserializing data from disk. This release also brings a | |
| new <a href="http://rethinkdb.com/docs/javascript/uuid">r.uuid</a> command that allows server-side generation of UUIDs.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 25 Sep 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.15-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.15-release</guid> | |
| </item> | |
| <item> | |
| <title>Publish and subscribe entirely in RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>With RethinkDB’s changefeeds, it’s easy to create a publish-subscribe message | |
| exchange without going through a third-party queue. <a href="https://github.com/deontologician)">Josh Kuhn</a> has written a | |
| small library, <a href="https://github.com/rethinkdb/example-pubsub">repubsub</a>, that shows you how to build topic | |
| exchanges—and he’s written it in all three of our officially-supported | |
| languages. He’s put together a terrific <a href="http://www.rethinkdb.com/docs/publish-subscribe/">tutorial</a> article demonstrating how | |
| to use it. You can simply create a topic and publish messages to it:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="n">topic</span> <span class="o">=</span> <span class="n">exchange</span><span class="o">.</span><span class="n">topic</span><span class="p">(</span><span class="s">'fights.superheroes.batman'</span><span class="p">)</span> | |
| <span class="n">topic</span><span class="o">.</span><span class="n">publish</span><span class="p">({</span><span class="s">'opponent'</span><span class="p">:</span> <span class="s">'Joker'</span><span class="p">,</span> <span class="s">'victory'</span><span class="p">:</span> <span class="bp">True</span><span class="p">})</span> | |
| </code></pre> | |
| </div> | |
| <p>Then subscribe to just the messages that match your interest.</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="n">filter_func</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">topic</span><span class="p">:</span> <span class="n">topic</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="s">r'fights</span><span class="err">\</span><span class="s">.superheroes.*'</span><span class="p">)</span> | |
| <span class="n">queue</span> <span class="o">=</span> <span class="n">exchange</span><span class="o">.</span><span class="n">queue</span><span class="p">(</span><span class="n">filter_func</span><span class="p">)</span> | |
| <span class="k">for</span> <span class="n">topic</span><span class="p">,</span> <span class="n">payload</span> <span class="ow">in</span> <span class="n">queue</span><span class="o">.</span><span class="n">subscription</span><span class="p">:</span> | |
| <span class="k">print</span> <span class="n">topic</span><span class="p">,</span> <span class="n">payload</span> | |
| </code></pre> | |
| </div> | |
| <p>Josh describes how to implement tags, nested topics and more, so check out the | |
| <a href="http://www.rethinkdb.com/docs/publish-subscribe/">publish-subscribe tutorial</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 03 Sep 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/publish-subscribe</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/publish-subscribe</guid> | |
| </item> | |
| <item> | |
| <title>September events in San Francisco</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Join the RethinkDB team at the following events for September 2014:</p> | |
| <h2 id="meetup-rethinkdb-sf-group-at-heavybit-industries">Meetup: RethinkDB SF Group at Heavybit Industries</h2> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2014-09-02-heavybit.jpg" style="float: right; margin: 0px 40px;" /></p> | |
| <p><em>Thursday, September 11th at 6pm</em>, <a href="http://www.heavybit.com/">Heavybit Industries</a>), 325 Ninth | |
| Street (<a href="https://www.google.com/maps/place/325+9th+St,+San+Francisco,+CA+94103/@37.773589,-122.411017,17z/data=!3m1!4b1!4m2!3m1!1s0x808f7e283f30b915:0x6697580414bf2352?hl=en-US">map</a>)</p> | |
| <p>RethinkDB co-founder, Slava Akhmechet, will be talking about the latest | |
| RethinkDB advances and where it’s headed; come meet the founders & engineers!</p> | |
| <p>Get architectural advice, improve your code, give the RethinkDB team product | |
| feedback, and catch a sneak peek of upcoming features. Talks will start at | |
| 7pm. Food and drinks provided.</p> | |
| <p><a href="http://www.meetup.com/RethinkDB-SF-Meetup-Group/events/200802562/">RSVP here</a></p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 02 Sep 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/september-events</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/september-events</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.14: binary data, seamless migration, and Python 3 support</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.14</strong> (<a href="http://www.youtube.com/watch?v=EvBF3Lxla98">Brazil</a>). <a href="http://rethinkdb.com/docs/install/">Download it | |
| now!</a></p> | |
| <p><a href="http://xkcd.com/303/"><img src="http://rethinkdb.com/assets/images/posts/2014-08-26-1.14-release-poster.png" /></a></p> | |
| <p>The 1.14 release includes over <a href="https://github.com/rethinkdb/rethinkdb/issues?q=is%3Aissue+milestone%3A1.14+is%3Aclosed">50 enhancements</a> including:</p> | |
| <ul> | |
| <li><strong>Seamless migration</strong> (read more below)</li> | |
| <li>Simple <a href="http://rethinkdb.com/api/javascript/binary/">binary data</a> support</li> | |
| <li>Python 3 support</li> | |
| <li>Support for returning changes from multiple writes</li> | |
| <li>Better <a href="https://github.com/rethinkdb/docs/issues?q=is%3Aclosed+is%3Aissue+assignee%3Achipotle">documentation</a></li> | |
| <li>New options for handling conflicts on inserts</li> | |
| <li>Dozens of stability and performance improvements</li> | |
| </ul> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 26 Aug 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.14-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.14-release</guid> | |
| </item> | |
| <item> | |
| <title>Join us online for a live presentation and Q&A for RethinkDB 1.14</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Join us online on <strong>Thursday, August 21st at 1:30pm</strong> for a live presentation | |
| and Q&A session presented by RethinkDB’s co-founder Slava Akhmechet. You’ll | |
| learn about new and upcoming features in RethinkDB 1.14, including:</p> | |
| <ul> | |
| <li><strong>Changefeeds</strong>: get realtime push notifications of changes in the database.</li> | |
| <li><strong>r.http</strong>: Don’t fetch data from the internet and store it in the database, | |
| get the database to fetch it for you!</li> | |
| <li><strong>Binary data types</strong>: store images, zip files, and arbitrary binary data in | |
| a field.</li> | |
| <li>Other features in RethinkDB 1.14: Promises in the JavaScript driver, Python 3 | |
| support, and seamless migrations.</li> | |
| </ul> | |
| <p>To attend, <a href="https://attendee.gotowebinar.com/register/4543556240365418498">register for the webinar</a>, and follow the instructions you | |
| receive via email.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 15 Aug 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.14-release-webinar-announcement</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.14-release-webinar-announcement</guid> | |
| </item> | |
| <item> | |
| <title>Feed RethinkDB changes directly into RabbitMQ</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>RethinkDB’s new <a href="http://rethinkdb.com/docs/changefeeds">changefeeds</a> let your applications subscribe to changes | |
| made to a table in real-time. They’re a perfect match with a distributed | |
| message queue system like <a href="http://www.rabbitmq.com">RabbitMQ</a>: changes can be sent from RethinkDB to | |
| a RabbitMQ topic exchange with only a few extra lines of code. RabbitMQ then | |
| queues them to pass on to any client subscribed to that exchange. If you need | |
| to to send information about those changes to a large number of clients as | |
| efficiently as possible, RabbitMQ is the rodent you need. Imagine a changefeed | |
| for real-time stock updates being distributed to a thousand terminals on a | |
| trading floor.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 25 Jul 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-rabbitmq</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-rabbitmq</guid> | |
| </item> | |
| <item> | |
| <title>Rethink and Rails together? A NoBrainer!</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Have you been looking for a tutorial on using RethinkDB with Ruby on Rails? | |
| RethinkDB’s Josh Kuhn (<a href="https://github.com/deontologician">@deontologician</a>) has contributed a new integration | |
| article for our documentation on using <a href="http://nobrainer.io/">NoBrainer</a>, a RethinkDB ORM that’s | |
| close to a drop-in replacement for ActiveRecord.</p> | |
| <p>If you already have a little experience with Rails, NoBrainer will feel | |
| familiar and natural to you already. You get model generation, scaffolding, | |
| validation, and <code class="highlighter-rouge">belongs_to</code> and <code class="highlighter-rouge">has_many</code> associations. And, you get a | |
| lightweight wrapper around ReQL that lets you execute queries like this:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="c1"># Find a comment from a user with 'bob' in its name sorted by the name.</span> | |
| <span class="c1"># Note: NoBrainer will use the :name index from User by default</span> | |
| <span class="no">User</span><span class="p">.</span><span class="nf">where</span><span class="p">(</span><span class="ss">:name</span> <span class="o">=></span> <span class="sr">/bob/</span><span class="p">).</span><span class="nf">order_by</span><span class="p">(</span><span class="ss">:name</span> <span class="o">=></span> <span class="ss">:desc</span><span class="p">).</span><span class="nf">to_a</span> | |
| </code></pre> | |
| </div> | |
| <p>Go read the full guide: <a href="http://rethinkdb.com/docs/rails">Using RethinkDB with Ruby on Rails</a></p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 18 Jul 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethink-rails-nobrainer</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethink-rails-nobrainer</guid> | |
| </item> | |
| <item> | |
| <title>Building realtime apps with RethinkDB and Firebase</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-06-20-rethinkdb-firebase-meetup.png" /> | |
| ]]> | |
| <div><p>We’re co-hosting a RethinkDB + Firebase meetup on realtime sync architectures | |
| for web and mobile apps. We’ll be talking about:</p> | |
| <ul> | |
| <li>designing backend realtime sync architectures</li> | |
| <li>scaling those architectures when it’s time</li> | |
| <li>new features in RethinkDB and Firebase to make building realtime apps easier</li> | |
| </ul> | |
| <p>Come hang out with the RethinkDB and Firebase teams – or even better, give a | |
| lightning talk on how you’re using RethinkDB!</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 20 Jun 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-firebase-meetup</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-firebase-meetup</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.13: pull data via HTTP, push data via changefeeds</title> | |
| <description> | |
| <![CDATA[ | |
| <img src="http://rethinkdb.com/assets/images/posts/2014-06-12-1.13-release-banner.png" /> | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.13</strong> (<a href="https://www.youtube.com/watch?v=hkCqSHwhKVg">My Name is Nobody</a>). | |
| <a href="http://rethinkdb.com/docs/install/">Download it now!</a></p> | |
| <p>The 1.13 release includes over <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=61&state=closed">150 enhancements</a>, including:</p> | |
| <ul> | |
| <li>New <a href="http://rethinkdb.com/docs/external-api-access">http</a> command for seamlessly pulling data from external APIs into | |
| RethinkDB</li> | |
| <li>New <a href="http://rethinkdb.com/docs/changefeeds/">changes</a> command for subscribing to document changes on tables</li> | |
| <li>Full promises support in the JavaScript driver</li> | |
| <li>A high performance JSON driver protocol</li> | |
| <li>Dozens of performance and stability improvements</li> | |
| </ul> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 12 Jun 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.13-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.13-release</guid> | |
| </item> | |
| <item> | |
| <title>@antirez, thank you for Redis!</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Yesterday, Salvatore <a href="http://antirez.com/news/75">posted an amazing write-up</a> on implementing | |
| the really neat HyperLogLog data structure in Redis. We keep being | |
| amazed by Redis and Salvatore — he’s taught us a great deal | |
| about good APIs, usability, and software development in general. We | |
| learned so much from Redis, we drew this to celebrate his work. | |
| Thanks for your hard work, <a href="https://twitter.com/antirez">@antirez</a>!</p> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2014-04-03-thanks-redis.jpg" /></p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 03 Apr 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/thanks-redis</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/thanks-redis</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.12: simplified map/reduce, ARM port, new caching infrastructure</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.12</strong> (<a href="https://www.youtube.com/watch?v=vQLNS3HWfCM">The Wizard of Oz</a>). | |
| <a href="http://rethinkdb.com/docs/install/">Download it now!</a></p> | |
| <p>With over <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=53&state=closed">200 enhancements</a>, the 1.12 release is one of the biggest releases | |
| to date. This release includes:</p> | |
| <ul> | |
| <li>Dramatically simplified map/reduce and aggregation commands.</li> | |
| <li>Big improvements to caching that do away with long-standing stability and performance limitations.</li> | |
| <li>A port to the ARM architecture.</li> | |
| <li>Four new ReQL commands for object and string manipulation.</li> | |
| <li>Dozens of bug fixes, stability enhancements, and performance improvements.</li> | |
| </ul> | |
| <p><a href="https://www.youtube.com/watch?v=mktjXnWfaGc"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.12.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Sat, 15 Mar 2014 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.12-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.12-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB raises an $8M Series A</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today we’re delighted to announce our Series A! We’ve raised $8M to fund | |
| development, grow the RethinkDB community, and ultimately make database tools | |
| <a href="https://github.com/rethinkdb/rethinkdb/issues/1000">feel indistinguishable from magic</a>.</p> | |
| <p>Here’s what we’re planning to accomplish with this new development budget:</p> | |
| <ul> | |
| <li> | |
| <p><strong>Get to a long-term support release</strong>: Since we first shipped the beta | |
| version of RethinkDB we’ve been humbled by the feedback, support, and | |
| encouragement from our users. Over the past thirteen months we’ve shipped ten | |
| new releases, fixed hundreds of bugs, and added dozens of new features. We’re | |
| now hard at work polishing the final rough edges in preparation for the | |
| upcoming LTS release.</p> | |
| </li> | |
| <li> | |
| <p><strong>Grow the community:</strong> An amazing community has sprung up around RethinkDB | |
| over the past year. We’re incredibly grateful to all the people who’ve spent | |
| time developing and supporting client drivers for <a href="http://rethinkdb.com/docs/install-drivers/">15 different | |
| languages</a>, building frameworks, ORMs, and designing new | |
| admin tools. We’re now in a position to give back to our community by | |
| sponsoring conferences, promoting community projects, improving | |
| documentation, and introducing more developers to RethinkDB.</p> | |
| </li> | |
| <li> | |
| <p><strong>Offer commercial support:</strong> Thousands of developers are already building | |
| applications backed by RethinkDB; from mobile games to gene sequence | |
| analysis, and everything in between. In the coming months we’ll be adding | |
| commercial support options to give these teams everything they need to | |
| confidently use RethinkDB in production deployments.)</p> | |
| </li> | |
| </ul> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 10 Dec 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/funding</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/funding</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.11: query profiler, new streaming algorithm, devops enhancements</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today, we’re happy to announce <strong>RethinkDB 1.11</strong> (<a href="http://www.youtube.com/watch?v=rVFi-yeTe5g">Breakfast at | |
| Tiffany’s</a>), which improves the experience of operating live RethinkDB | |
| deployments. <a href="http://rethinkdb.com/docs/install/">Download it now!</a></p> | |
| <p>The 1.11 release features more than <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v1.11.0">70 enhancements</a>, including:</p> | |
| <ul> | |
| <li>A new <strong>query profiler</strong> to analyze the performance of ReQL queries.</li> | |
| <li>An improved <strong>streaming algorithm</strong> that reduces query latency.</li> | |
| <li>DevOps enhancements, including <strong>new ReQL commands</strong> designed for operations</li> | |
| </ul> | |
| <p><a href="https://www.youtube.com/watch?v=avbTx3tpIc8"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.11.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 22 Nov 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/1.11-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.11-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.10: multi-indexes and serialization improvements</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are happy to announce <strong>RethinkDB 1.10</strong> (<a href="http://www.youtube.com/watch?v=0JPu3BP5Ets">Von Ryan’s Express</a>). | |
| <a href="http://rethinkdb.com/docs/install">Download it now!</a></p> | |
| <p>This release lets you index a row by multiple values at once, which can make | |
| entire classes of queries much faster (see below). It also includes major | |
| improvements to the way we serialize small values, which should increase the | |
| performance of many disk/network-bound workloads.</p> | |
| <p>Take a look at the <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v1.10.0">full list</a> of improvements, or watch Daniel Mewes | |
| (<a href="https://github.com/danielmewes">@danielmewes</a>), an engineer at RethinkDB, talk about the 1.10 release in | |
| this two-minute video:</p> | |
| <p><a href="https://www.youtube.com/watch?v=JXxfwY7OkLI"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.10.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 23 Sep 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.10-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.10-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.9: indexing and query runtime performance</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are happy to announce <strong>RethinkDB 1.9</strong> (Kagemusha). | |
| <a href="http://rethinkdb.com/docs/install/">Download it now!</a></p> | |
| <p>This release includes massive enhancements that improve performance of many | |
| queries by orders of magnitude. See the <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v1.9.0">full list</a> of <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=49&state=closed">enhancements</a>, or | |
| watch Joe Doliner (<a href="https://github.com/jdoliner">@jdoliner</a>), an engineer at RethinkDB, talk about the 1.9 | |
| release in this two-minute video:</p> | |
| <p><a href="https://www.youtube.com/watch?v=m1Ds1VpECv0"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.9.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 10 Sep 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.9-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.9-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.8: date support, nested object syntax, 8x disk usage improvement</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are happy to announce <strong>RethinkDB 1.8</strong> (High Noon). <a href="http://rethinkdb.com/docs/install/">Download it | |
| now!</a></p> | |
| <p>This release includes the following features and improvements:</p> | |
| <ul> | |
| <li>ReQL improvements | |
| <ul> | |
| <li><strong>Dates and times</strong> are natively supported, and there are over 20 new | |
| commands for creating, manipulating, and querying them.</li> | |
| <li><strong>Nested documents</strong> are easier to work with in <code class="highlighter-rouge">update</code> and <code class="highlighter-rouge">merge</code>. (We | |
| also extended support for <code class="highlighter-rouge">pluck</code>’s nested document syntax to <code class="highlighter-rouge">without</code>, | |
| <code class="highlighter-rouge">group_by</code>, <code class="highlighter-rouge">with_fields</code>, and <code class="highlighter-rouge">has_fields</code>.)</li> | |
| </ul> | |
| </li> | |
| <li>Server improvements | |
| <ul> | |
| <li>Server uses <strong>8x less disk space</strong>.</li> | |
| <li>Tables support <strong>efficient ordering</strong> by primary or secondary indexes.</li> | |
| <li><strong>Javascript evaluation</strong> is more efficient and reliable.</li> | |
| <li><strong>Cross-network cluster operation</strong> is much easier.</li> | |
| </ul> | |
| </li> | |
| </ul> | |
| <p>See the <a href="https://github.com/rethinkdb/rethinkdb/releases/tag/v1.8.0">full list</a> of <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=40&state=closed">over 90</a> bug fixes, features, and enhancements.</p> | |
| <p>Michael Lucy (<a href="https://github.com/mlucy">@mlucy</a>), an engineer at RethinkDB, introduces these new | |
| features in this two-minute video:</p> | |
| <p><a href="https://www.youtube.com/watch?v=j65mZzKLaMM"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.8.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 13 Aug 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.8-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.8-release</guid> | |
| </item> | |
| <item> | |
| <title>Computing Fibonacci in RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Yesterday I saw <a href="https://github.com/taybin/lexthink">@taybin’s</a> RethinkDB driver for <a href="http://elixir-lang.org/">Elixir</a>. I didn’t know | |
| anything about the language so I started browsing through the documentation, | |
| and stumbled on the obligatory <a href="https://gist.github.com/kyanny/2026028">Fibonacci example</a>. Of course I | |
| immediately got the itch to compute Fibonacci in ReQL. It turned out to be | |
| pretty simple.</p> | |
| <p>First, create a table to store the Fibonacci numbers and insert the two base | |
| cases:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="nx">r</span><span class="p">.</span><span class="nx">tableCreate</span><span class="p">(</span><span class="s1">'fib'</span><span class="p">);</span> | |
| <span class="nx">r</span><span class="p">.</span><span class="nx">table</span><span class="p">(</span><span class="s1">'fib'</span><span class="p">).</span><span class="nx">insert</span><span class="p">([{</span><span class="na">id</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="mi">0</span><span class="p">},</span> | |
| <span class="p">{</span><span class="na">id</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="na">value</span><span class="p">:</span> <span class="mi">1</span><span class="p">}]);</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 17 Jul 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/fib</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/fib</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.7: hot backup, atomic set and get, 10x insert performance improvement</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are happy to announce <strong>RethinkDB 1.7</strong> (Nights of Cabiria). <a href="http://rethinkdb.com/docs/install/">Download it | |
| now!</a></p> | |
| <p>This release includes the following features and improvements:</p> | |
| <ul> | |
| <li>Tools for CSV and JSON import and export</li> | |
| <li>Support for hot backup and restore</li> | |
| <li>ReQL support for atomic set and get operations</li> | |
| <li>A powerful new syntax for handling nested documents</li> | |
| <li>Greater than 10x performance improvement on document inserts</li> | |
| <li>Native binaries for CentOS / RHEL</li> | |
| <li>A number of small ReQL improvements (explained below)</li> | |
| </ul> | |
| <p>See the full list of <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=37&page=1&state=closed">over 30</a> bug fixes, features, and enhancements.</p> | |
| <p>Etienne Laurin (<a href="https://github.com/atnnn">@atnnn</a>), an engineer at RethinkDB, introduces these new | |
| features in this one-minute video:</p> | |
| <p><a href="https://www.youtube.com/watch?v=eC3zSDCGepw"> | |
| <img src="http://rethinkdb.com/assets/images/videos/releases/rethinkdb-1.7.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 03 Jul 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.7-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.7-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.6: regex matching, new array operations, random sampling</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are happy to announce <strong>RethinkDB 1.6</strong> (Fargo). Go <a href="http://rethinkdb.com/docs/install/">download it | |
| now</a>)!</p> | |
| <p>This release includes regex string matching, fourteen new array operations, | |
| support for random sampling, error handling improvements, support for | |
| authentication keys, and <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=31&state=closed">over 65</a> bug fixes, features, and enhancements.</p> | |
| <p><a href="https://twitter.com/arhoads76/status/305234472717127681"> | |
| <img src="http://rethinkdb.com/assets/images/posts/2013-06-13-1.6-release-1.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 13 Jun 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.6-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.6-release</guid> | |
| </item> | |
| <item> | |
| <title>All about lambda functions in RethinkDB queries</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>It’s no secret that ReQL, the RethinkDB query language, is modeled after | |
| functional languages like Lisp and Haskell. The functional paradigm is | |
| particularly well suited to the needs of a distributed database while being | |
| more easily embeddable as a DSL than SQL’s ad hoc syntax. Key to functional | |
| programming’s power and simplicity is the anonymous (aka lambda) function.</p> | |
| <p>This post covers all aspects of lambda functions in ReQL from concept to | |
| implementation and is meant for <a href="http://github.com/mfenniak/rethinkdb-net">third</a> <a href="http://github.com/christopherhesse/rethinkgo">party</a> | |
| <a href="http://github.com/taybin/lethink">driver</a> <a href="http://github.com/danielmewes/php-rql">developers</a> and those interested in functional | |
| programming and programming language design. For a more practical guide to | |
| using ReQL please see our <a href="http://rethinkdb.com/docs">docs</a> where you can find <a href="http://rethinkdb.com/docs/faq">FAQs</a>, | |
| <a href="http://rethinkdb.com/screencast">screencasts</a>, an <a href="http://rethinkdb.com/api">API reference</a>, as well as various tutorials and | |
| examples.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 23 May 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/lambda-functions</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/lambda-functions</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.5: secondary indexes, batched inserts performance improvements, soft durability mode</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We are pleased to announce <strong>RethinkDB 1.5</strong> ( The Graduate), so go <a href="http://rethinkdb.com/docs/install/">download | |
| it now</a>!</p> | |
| <p>This release includes the long-awaited support for secondary indexes, a new | |
| algorithm for batched inserts that results in an ~18x performance improvement, | |
| support for soft durability (don’t worry – off by default), and <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=8&page=1&state=closed">over 180</a> | |
| bug fixes, features, and enhancements.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 16 May 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/1.5-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/1.5-release</guid> | |
| </item> | |
| <item> | |
| <title>A tool for RethinkDB driver developers</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>The <a href="http://rethinkdb.com/blog/rethinkdb-1.4-release/">main focus of the 1.4 release</a> was to refactor the client-server | |
| wire protocol to simplify future development of the query language and also to | |
| make writing client drivers for new languages significantly easier.</p> | |
| <p>It’s been a bit over a month since the release and we’ve already heard of a | |
| couple of new drivers being developed. <a href="https://github.com/taybin/lethink">Erlang</a>, <a href="https://github.com/mfenniak/rethinkdb-net">C#</a>, Scala, and the | |
| just-announced <a href="http://danielmewes.github.io/php-rql/">PHP</a> are the ones we know about, but we hope to hear from | |
| you about even more of them!</p> | |
| <p>This seemed like a confirmation that a refactored, simplified and source | |
| documented <a href="https://github.com/rethinkdb/rethinkdb/blob/next/src/rdb_protocol/ql2.proto">protobuf definition</a> and the rewritten official drivers were | |
| indeed what was needed to enable users to start working on new drivers. But we | |
| realized, and our users helped us with this, that while being a good start, | |
| these do not (and can not) provide all the details needed while developing new | |
| drivers.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 22 Apr 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/a-tool-for-rethinkdb-driver-developers</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/a-tool-for-rethinkdb-driver-developers</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.4: improved wire protocol, updated drivers, data explorer history</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>RethinkDB 1.4 (<a href="http://www.youtube.com/watch?v=Eo2v3kTxzBU">Some Like it Hot</a>) is out. This release includes an | |
| improved wire protocol, updated drivers, support for query history in the data | |
| explorer, and a brand-new build system. It contains well over 100 bug fixes, | |
| features, and improvements (you can see the complete list of <a href="https://github.com/rethinkdb/rethinkdb/issues?milestone=5&page=1&state=closed">closed issues on | |
| Github</a>).</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 18 Mar 2013 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-1.4-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-1.4-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB tech talk at Walmart Labs</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Bill Rowan, engineer at RethinkDB, gives a talk | |
| introducing our open-source distributed document | |
| database– he discusses replication, sharding, | |
| writing queries with ReQL, and its internal | |
| architecture.</p> | |
| <p><a href="https://www.youtube.com/watch?v=H9G1dCMTWps"> | |
| <img src="http://rethinkdb.com/assets/images/videos/walmart-labs.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 25 Feb 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/walmart-labs</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/walmart-labs</guid> | |
| </item> | |
| <item> | |
| <title>Query languages and DSLs in Ruby</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Michael Lucy, engineer at RethinkDB, gives a talk on | |
| how we built our query language (ReQL) as a DSL for | |
| languages like Ruby, Python, and Javascript and the | |
| challenges we encountered along the way.</p> | |
| <p><a href="https://www.youtube.com/watch?v=1KTtYJImCDE"> | |
| <img src="http://rethinkdb.com/assets/images/videos/dsls-mlucy.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 25 Feb 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/query-languages-and-dsls-in-ruby</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/query-languages-and-dsls-in-ruby</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB example apps</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today we’ve updated the <a href="http://rethinkdb.com/docs">documentation page</a> with a set of simple example | |
| apps that use RethinkDB as the backend database. These examples should serve as | |
| a quick way to figure out how to use stack X with RethinkDB. While very basic, | |
| the examples give a good idea of how to put all the pieces together.</p> | |
| <p>So far we’ve published two applications based on the following stacks:</p> | |
| <ul> | |
| <li>A <a href="http://rethinkdb.com/docs/examples/flask-backbone-todo">todo list</a> built with Flask, Backbone.js, and RethinkDB (see it on | |
| <a href="https://github.com/rethinkdb/rethinkdb-example-flask-backbone-todo">GitHub</a>)</li> | |
| <li>A <a href="http://rethinkdb.com/docs/examples/sinatra-pastie">simple Pastie app</a> built with Sinatra and RethinkDB (see it on | |
| <a href="https://github.com/rethinkdb/rethinkdb-example-sinatra-pastie">GitHub</a>)</li> | |
| </ul> | |
| <p>The code is available on GitHub under the MIT license. We really like the | |
| documentation format generated by <a href="http://rtomayko.github.com/rocco/">rocco.rb</a>, so we used it to annotate the | |
| source code. Documenting these apps has been a good exercise in eating our own | |
| dog food because we had to put the API to work and identify new ways to improve | |
| it.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 01 Feb 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-example-apps</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-example-apps</guid> | |
| </item> | |
| <item> | |
| <title>Our take on RethinkDB vs today's NoSQL</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><div class="infobox "><p><strong>Interested in a less biased overview?</strong> We encourage you to also read the | |
| technical comparison between <a href="http://rethinkdb.com/docs/comparison-tables">RethinkDB and MongoDB</a>.</p> | |
| </div> | |
| <p>Many people have been asking how RethinkDB differs from MongoDB and other NoSQL | |
| systems. Our first attempt to address these questions is a high level | |
| <a href="http://rethinkdb.com/docs/comparison-tables">technical overview</a> comparing RethinkDB with MongoDB. However, the | |
| overview is meant to be impartial, and it omits some of the more interesting | |
| bits about what makes RethinkDB special (such as our irrational love for Dota). | |
| In this post we wanted to describe the product from a more personal | |
| perspective.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 31 Jan 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/mongodb-biased-comparison</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/mongodb-biased-comparison</guid> | |
| </item> | |
| <item> | |
| <title>Check out the RethinkDB screencast</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We’ve put together a short screencast to showcase some of the features of | |
| RethinkDB. The screencast walks through starting RethinkDB, inserting and | |
| updating JSON documents through the web UI using the Javascript ReQL driver, | |
| building data analysis queries (to get insight into GitHub’s commit information | |
| dataset), as well as sharding and replicating data. Check it out!</p> | |
| <p><a href="https://www.youtube.com/watch?v=cnpSi9qI02E"> | |
| <img src="http://rethinkdb.com/assets/images/videos/screencast.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 17 Jan 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-screencast</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-screencast</guid> | |
| </item> | |
| <item> | |
| <title>Filesystem vulnerability identified, please update to RethinkDB 1.3.2</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We identified a filesystem vulnerability this morning that allows read access | |
| to arbitrary files on the filesystem through the web administation tool.</p> | |
| <p>A fix has been pushed for all platforms in RethinkDB 1.3.2, so <strong>please update | |
| immediately</strong>: see the <a href="http://rethinkdb.com/docs/install">install page</a> for instructions.</p> | |
| <h1 id="what-caused-this-vulnerability">What caused this vulnerability?</h1> | |
| <p>The built-in web server has a whitelist to allow serving only a very specific | |
| set of files required to run the web administration tool (see the <a href="https://github.com/rethinkdb/rethinkdb/blob/next/src/clustering/administration/http/server.cc">whitelist</a> | |
| on Github).</p> | |
| <p>However, we inadvertently disabled the whitelist during development. One of our | |
| engineers noticed this during a procedural code review (a policy recently | |
| introduced after the release of RethinkDB 1.2) and we implemented <a href="https://github.com/rethinkdb/rethinkdb/commit/b8dc4af9215b0bf6943114c3f84d8ee50ede858f">a fix</a> | |
| immediately.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 15 Jan 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/filesystem-vulnerability</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/filesystem-vulnerability</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB in under two minutes</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>This short video does a quick walkthrough of RethinkDB and its key | |
| features. The video showcases the query language, the administration | |
| UI, sharding, replication, and other important capabilities of | |
| RethinkDB, all in less than two minutes. If you’d like to get a quick | |
| sense for what RethinkDB feels like, check it out!</p> | |
| <p><a href="https://www.youtube.com/watch?v=qKPKsBNw604"> | |
| <img src="http://rethinkdb.com/assets/images/videos/what-is-rethinkdb.png" /> | |
| </a></p> | |
| </div> | |
| </description> | |
| <pubDate>Sun, 13 Jan 2013 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/what-is-rethinkdb</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/what-is-rethinkdb</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB 1.3 is out, now available on OS X</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We’ve released RethinkDB 1.3 (<a href="http://www.youtube.com/watch?v=ZSExdX0tds4">Metropolis</a>) which has a large number of | |
| enhancements, and adds support for OS X and several other platforms. As of the | |
| 1.3 release, the server can now be installed on the following platforms:</p> | |
| <ul> | |
| <li>OS X Lion and above (>= 10.7)</li> | |
| <li>32-bit and 64-bit Ubuntu Lucid and above (>= 10.04)</li> | |
| </ul> | |
| <p>Porting to OS X was one of the most requested features, and allows OS X users | |
| to try RethinkDB without installing a Linux VM. The story of long and arduous | |
| adventure of overcoming the many differences between the Darwin and Linux | |
| kernels and their surrounding environments remains to be told by <a href="https://github.com/srh">@srh</a>.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 20 Dec 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-13-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-13-release</guid> | |
| </item> | |
| <item> | |
| <title>Call for comments: RethinkDB wire protocol</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>When version 1.2 was released, we were <a href="http://news.ycombinator.com/item?id=4763879">surprised (and delighted) by how many | |
| people</a> asked about writing RethinkDB clients in their language. | |
| RethinkDB’s query language (RQL) is encoded using Google’s Protocol Buffers, | |
| which are available in many languages. So writing a client should have been | |
| relatively easy, at least in theory. In practice, <a href="https://github.com/rethinkdb/rethinkdb/blob/1451f83cabf412484d2db2e9a49ab6f30c41d0c5/src/rdb_protocol/query_language.proto">our first Protobuf spec</a> | |
| was a mess. It accreted a number of hacks and inconsistencies as the scope of | |
| the query language grew, and the scramble to release didn’t help matters.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 30 Nov 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-wire-protocol-call-for-comments</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-wire-protocol-call-for-comments</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB's first community client driver is for Haskell</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Thanks to <a href="https://github.com/atnnn">Etienne Laurin</a>, there is now a <strong>Haskell client for | |
| RethinkDB</strong>: check out the <a href="http://permalink.gmane.org/gmane.comp.lang.haskell.cafe/101764">release announcement</a> on Haskell-Cafe.</p> | |
| <p>The first version of the protocol definition is arcane and undocumented (a <a href="https://github.com/rethinkdb/rethinkdb/wiki/protobuf_rfc_raw_spec">new | |
| spec proposal</a> is in the works), so he took on the daunting task of reverse | |
| engineering <a href="http://rethinkdb.com/docs/guides/drivers/">the existing published drivers</a>. Etienne and is the first | |
| community member to release a RethinkDB community driver.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 28 Nov 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-first-community-client-driver-is-for-haskell</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-first-community-client-driver-is-for-haskell</guid> | |
| </item> | |
| <item> | |
| <title>Answers to common questions about RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><strong><em>Note: this is a blog post from November 2012, and much of the information | |
| here is outdated. RethinkDB has <a href="http://rethinkdb.com/docs/install">official packages</a> for Ubuntu, | |
| Centos, Debian, and OS X (both prebuilt and via Homebrew); current versions of | |
| RethinkDB use a <a href="http://rethinkdb.com/docs/driver-spec/">JSON-based protocol</a> rather than Protobufs; in | |
| addition to the official client drivers for Python, Ruby and JavaScript, we | |
| have <a href="http://rethinkdb.com/docs/install-drivers">community-supported drivers</a> for a variety of languages | |
| including C#, Clojure, Dart, Go, Haskell, Java, Lua, Perl, PHP and Scala; | |
| RethinkDB has <a href="">geospatial support</a>; and while RethinkDB supports “upserts,” | |
| the <a href="http://rethinkdb.com/api/javascript/insert">insert</a> command now uses a different syntax.</em></strong></p> | |
| <p>We received a lot of questions in past few days since <a href="http://news.ycombinator.com/item?id=4763879">our release</a>. While | |
| my colleagues are busy expanding <a href="http://rethinkdb.com/docs/install">support for other Linux distros</a>, | |
| <a href="https://github.com/rethinkdb/rethinkdb">squashing bugs</a>, and improving the <a href="http://rethinkdb.com/docs">documentation</a>), I thought | |
| I’d use this time to answer some of the most common questions we received.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 16 Nov 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/answers-to-common-questions</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/answers-to-common-questions</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB challenge: find a bug, get a job</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><h1 id="the-challenge">The challenge</h1> | |
| <p>Follow the <a href="http://rethinkdb.com/docs/install/">installation instructions</a> to set up the server. Then, in | |
| a language of your choice, write an automated fuzzer that sends randomized | |
| traffic to the database server with the purpose of discovering a crash. The | |
| fuzzer can use <code class="highlighter-rouge">rethinkdb admin</code> to reshard or replicate the database, one or | |
| more rethinkdb clients to send randomized queries, direct TCP access to send | |
| faulty traffic to the server, or a combination of approaches. We will consider | |
| all candidates whose fuzzer manages to expose a server crash.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 15 Nov 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/challenge</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/challenge</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB is out: an open-source distributed database</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>There are <a href="http://www.mongodb.org/">many</a> <a href="http://basho.com/">exciting</a> <a href="http://couchdb.apache.org/">database</a> products that make | |
| developing scalable applications much, much friendlier and easier. After three | |
| years of work, our humble contribution to the field is out. RethinkDB is built | |
| to store JSON documents, and scale to multiple machines with very little | |
| effort. It has a pleasant query language that supports really useful queries | |
| like table joins and group by, and is easy to setup and learn.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 09 Nov 2012 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-12-release</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-12-release</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB internals: Patching for fun and throughput</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>A central challenge in developing a high performance database is to maximize | |
| the efficiency at which hardware resources are used. By implementing a new | |
| optimization in how RethinkDB handles disk writes - the patch log - we were | |
| able to achieve an additional 50% increase in query throughput. The following | |
| graph compares the sustainable performance of RethinkDB for a mixed read/write | |
| workload (roughly 10% write operations) with and without the patch log. In both | |
| cases we configured the system to be bound by the disks’ write bandwidth.</p> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2011-06-20-rethinkdb-internals-patching-for-fun-and-throughput-1.png" alt="RethinkDB internals: Patching for fun and throughput" /></p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 20 Jun 2011 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-internals-patching-for-fun-and-throughput</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-internals-patching-for-fun-and-throughput</guid> | |
| </item> | |
| <item> | |
| <title>You should make it a portal</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>In a recent <a href="http://www.entrepreneur.com/article/219377">interview</a> with Entrepreneur magazine, Paul Graham said | |
| something that reminded me of an interesting story:</p> | |
| <p><em>When Google started, there were eight to 10 successful established search | |
| engines already, and search was so uncool that they were trying to get people | |
| to call them “portals”.</em></p> | |
| <p>I landed my first real programming job at a long defunct dot-com startup when I | |
| was a senior in high school in 1999. We were building an EBay for home | |
| improvement. Homeowners would post home improvement projects, and contractors | |
| would bid on them. We were going to take a cut out of each job.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 24 Mar 2011 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/you-should-make-it-a-portal</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/you-should-make-it-a-portal</guid> | |
| </item> | |
| <item> | |
| <title>On TRIM, NCQ, and Write Amplification</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Alex Popescu wrote a <a href="http://nosql.mypopescu.com/post/3859565367/rethinkdb-and-ssd-write-performance">blog post</a> asking some questions about RethinkDB and | |
| SSD performance. There is a related Twitter conversation happening <a href="http://twitter.theinfo.org/47379240475295745">here</a>. | |
| There are two fundamental questions:</p> | |
| <ul> | |
| <li>In which cases does SSD performance begin to degrade over time?</li> | |
| <li>How does the TRIM command affect performance degradation?</li> | |
| </ul> | |
| <p>The questions are very deep and I cannot do them justice in a single blog post, | |
| but I decided to post a quick write-up as a start.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 15 Mar 2011 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/on-trim-ncq-and-write-amplification</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/on-trim-ncq-and-write-amplification</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB internals: the caching architecture</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>A few days ago Salvatore Sanfilippo wrote about his work on a new <a href="http://groups.google.com/group/redis-db/browse_thread/thread/d444bc786689bde9">Redis | |
| diskstore</a> – a reworking of the <a href="http://antirez.com/post/redis-virtual-memory-story.html">old VM layer</a> based on a different set of | |
| assumptions and tradeoffs. I was very interested in the new approach because it | |
| is very similar to the RethinkDB caching architecture in principle. When we | |
| designed our caching layer we had a number of constraints we needed to satisfy:</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 06 Jan 2011 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-internals-the-caching-architecture</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-internals-the-caching-architecture</guid> | |
| </item> | |
| <item> | |
| <title>Handling stack overflow on custom stacks</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>On my computer, the callstack of a new process is around 10MB [1]. Modern | |
| operating system automatically reserve some amount of virtual memory and | |
| install protections on the page below the stack to create a segmentation fault | |
| on stack overflow. This ensures that a stack overflow won’t go corrupting | |
| random parts of memory.</p> | |
| <p>We want to have a lot of coroutines, so they should have smaller stacks, maybe | |
| 16 or 64KB. This makes stack overflow an even greater possibility, but at the | |
| same time, coroutines implemented in user space don’t get this checking for | |
| free–we have to build it ourselves. In the process, we can even do better: we | |
| can give some information about the coroutine which crashed.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 31 Dec 2010 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/handling-stack-overflow-on-custom-stacks</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/handling-stack-overflow-on-custom-stacks</guid> | |
| </item> | |
| <item> | |
| <title>Making coroutines fast</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Previously, I wrote about <a href="http://rethinkdb.com/blog/improving-a-large-c-project-with-coroutines">using coroutines in RethinkDB</a>. Coroutines are a | |
| nice alternative to callbacks because they are easier to program in, and they | |
| are a nice alternative to threads because of their greater performance. But how | |
| fast are they?</p> | |
| <p>Just using an off-the-shelf library like libcoroutine isn’t as fast as you | |
| might think. The graph below shows the huge performance degradation of a naive | |
| implementation of coroutines (the short red bar) compared to the old callback- | |
| based code (the blue bar on the left). But with the right set of optimizations, | |
| we can recover a level of performance about equal to the non- coroutine | |
| version. With these optimizations, throughput is recorded as the pink bar on | |
| the right, which is within the margin of error of the original version.</p> | |
| <p><img src="http://rethinkdb.com/assets/images/posts/2010-12-23-making-coroutines-fast-1.png" alt="Making coroutines fast" /></p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 23 Dec 2010 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/making-coroutines-fast</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/making-coroutines-fast</guid> | |
| </item> | |
| <item> | |
| <title>Improving a large C++ project with coroutines</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>At the core of RethinkDB is a highly parallel B-tree implementation. Due to our | |
| performance requirements, it is too expensive to create a native thread for | |
| each request. Instead, we create one thread per CPU on the server (logical CPU | |
| in the case of hyperthreading) and use cooperative concurrency within a thread.</p> | |
| <p>A single thread will have multiple logically concurrent units of control, | |
| taking turns when a unit needs to block. Blocking needs to take place | |
| ultimately for either I/O–waiting for information from the network or disk, or | |
| waiting to be notified that sending information there has completed–or for | |
| coordination with other threads. On top of this, we implemented higher-level | |
| abstractions which also block.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 20 Dec 2010 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/improving-a-large-c-project-with-coroutines</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/improving-a-large-c-project-with-coroutines</guid> | |
| </item> | |
| <item> | |
| <title>Distributed software testing</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><h1 id="about-me">About me</h1> | |
| <p>A word about me first: My name is Daniel Mewes, and I just came over to | |
| California to work at RethinkDB as an intern for the oncoming months. After | |
| having been an undergraduate student of computer science at Saarland | |
| University, Germany for the last two years, I am exited to work on an | |
| influential real-world project at RethinkDB now. Why RethinkDB? Not only does | |
| RethinkDB develop an exciting and novel piece of database technology, RethinkDB | |
| also provides the great “startup kind” of work experience.</p> | |
| <h1 id="software-testing">Software testing</h1> | |
| <p>In complex software systems like database management systems, different | |
| components have to work together. These components can interact in complex | |
| ways, yielding a virtually infinite number of possible states that the overall | |
| system can reach. This has consequences for software testing. As bugs in the | |
| code might only show up in a small fraction of the possible states, | |
| comprehensive testing of the system is essential. Encapsulation of code and | |
| data into objects can reduce the number of states that must be considered for | |
| any single piece of code. However an extremely large number of states can still | |
| remain, especially when considering parallel systems. Reliability requirements | |
| for database management systems on the other hand are stringent. Losing or | |
| corrupting data due to bugs in the program cannot be tolerated here.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 09 Dec 2010 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/distributed-software-testing</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/distributed-software-testing</guid> | |
| </item> | |
| <item> | |
| <title>Multi slicing</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>The basic data structure that powers databases is called a B-tree. This is | |
| where you actually store the user’s data. B-trees are great because you can put | |
| huge amounts of data in them and access remains fast. In fact, the naive | |
| strategy of putting a whole data set into one B-Tree doesn’t break down because | |
| of access time. It does, however, break down when you try to support a | |
| multiaccess paradigm.</p> | |
| <p>Six years ago, multiaccess was nice. Now that processors have multiple cores, | |
| it’s crucial. Four cores fighting over one B-tree means a lot of wasted | |
| processor time. In a multiaccess scheme, different cores can concurrently | |
| access data. This gets tricky. You can go looking for a piece of data only to | |
| find that someone has moved it since you started; that’s trouble: for all you | |
| know it was deleted. You could start the search over, but without guarantees– | |
| maybe you’ll get unlucky and it will be plucked out from under you again. How | |
| do you know when to give up? Your database is now blazingly fast, but also | |
| broken. We handle this with a locking scheme.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 25 Aug 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/multi-slicing</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/multi-slicing</guid> | |
| </item> | |
| <item> | |
| <title>Make debugging easier with custom pretty-printers</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><h1 id="whats-good-about-pretty-printers">What’s good about pretty-printers</h1> | |
| <p>One of the best features in Gdb 7.0+ is the ability to write pretty-printers in | |
| Python. Instead of printing a vector and seeing this:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="err">$</span><span class="mi">1</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">_Vector_base</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span><span class="n">std</span><span class="o">::</span><span class="n">allocator</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="o">>></span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="n">_M_impl</span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">allocator</span><span class="o"><</span><span class="kt">int</span><span class="o">>></span> <span class="o">=</span> <span class="p">{</span> | |
| <span class="o"><</span><span class="n">__gnu_cxx</span><span class="o">::</span><span class="n">new_allocator</span><span class="o"><</span><span class="kt">int</span><span class="o">>></span> <span class="o">=</span> <span class="p">{</span><span class="o"><</span><span class="n">No</span> <span class="n">data</span> <span class="n">fields</span><span class="o">></span><span class="p">},</span> <span class="o"><</span><span class="n">No</span> <span class="n">data</span> <span class="n">fields</span><span class="o">></span><span class="p">},</span> | |
| <span class="n">members</span> <span class="n">of</span> <span class="n">std</span><span class="o">::</span><span class="n">_Vector_base</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span><span class="n">std</span><span class="o">::</span><span class="n">allocator</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="o">>::</span><span class="n">_Vector_impl</span><span class="o">:</span> | |
| <span class="n">_M_start</span> <span class="o">=</span> <span class="mh">0x0</span><span class="p">,</span> | |
| <span class="n">_M_finish</span> <span class="o">=</span> <span class="mh">0x0</span><span class="p">,</span> | |
| <span class="n">_M_end_of_storage</span> <span class="o">=</span> <span class="mh">0x0</span> | |
| <span class="p">}</span> | |
| <span class="p">},</span> <span class="o"><</span><span class="n">No</span> <span class="n">data</span> <span class="n">fields</span><span class="o">></span><span class="p">}</span> | |
| </code></pre> | |
| </div> | |
| <p>I can now see this:</p> | |
| <div class="highlighter-rouge"><pre><code class="highlight"><span class="err">$</span><span class="mi">1</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span> <span class="n">of</span> <span class="n">length</span> <span class="mi">0</span><span class="p">,</span> <span class="n">capacity</span> <span class="mi">0</span> | |
| </code></pre> | |
| </div> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 19 Aug 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/make-debugging-easier-with-custom-pretty-printers</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/make-debugging-easier-with-custom-pretty-printers</guid> | |
| </item> | |
| <item> | |
| <title>The benchmark you're reading is probably wrong</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Mikeal Rogers wrote a <a href="http://www.futurealoof.com/posts/mongodb-performance-durability.html">blog post</a> on MongoDB performance and durability. In | |
| one of the sections, he writes about the request/response model, and makes the | |
| following statement:</p> | |
| <p><em>MongoDB, by default, doesn’t actually have a response for writes.</em></p> | |
| <p>In response, one of 10gen employees (the company behind MongoDB) made the | |
| following comment on Hacker News:</p> | |
| <p><em>We did this to make MongoDB look good in stupid benchmarks.</em></p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 08 Jul 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/the-benchmark-youre-reading-is-probably-wrong</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/the-benchmark-youre-reading-is-probably-wrong</guid> | |
| </item> | |
| <item> | |
| <title>Will the real programmers please stand up?</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We’ve been actively recruiting for four months now, and if there is one thing | |
| we’ve learned, it’s that Jeff Atwood wasn’t kidding about <a href="http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html">FizzBuzz</a>.</p> | |
| <p>Among our friends in the startup community, RethinkDB has the rep for having | |
| the toughest interview process on the block. And it’s true - the interview | |
| process is something we won’t compromise on. We’re prepared to turn away as | |
| many people as it takes to build a superb development team. We wrote that much | |
| in an earlier <a href="http://rethinkdb.com/blog/will-the-real-programmers-please-stand-up">post</a>. In the past few months we ran into people that thought | |
| we have ridiculously high standards and are hiring rocket scientists who also | |
| double majored in quantum mechanics and computer science. We don’t. We just | |
| won’t hire programmers that can’t code.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 29 Jun 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/will-the-real-programmers-please-stand-up</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/will-the-real-programmers-please-stand-up</guid> | |
| </item> | |
| <item> | |
| <title>Lock-free vs. wait-free concurrency</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>There are two types of <a href="http://en.wikipedia.org/wiki/Non-blocking_synchronization">non-blocking thread synchronization</a> algorithms - | |
| lock-free, and wait-free. Their meaning is often confused. In lock-free | |
| systems, while any particular computation may be blocked for some period of | |
| time, all CPUs are able to continue performing other computations. To put it | |
| differently, while a given thread might be blocked by other threads in a | |
| lock-free system, all CPUs can continue doing other useful work without stalls. | |
| Lock-free algorithms increase the overall throughput of a system by | |
| occassionally increasing the latency of a particular transaction. Most high- | |
| end database systems are based on lock-free algorithms, to varying degrees.</p> | |
| <p>By contrast, wait-free algorithms ensure that in addition to all CPUs | |
| continuing to do useful work, no computation can ever be blocked by another | |
| computation. Wait-free algorithms have stronger guarantees than lock-free | |
| algorithms, and ensure a high thorughput without sacrificing latency of a | |
| particular transaction. They’re also much harder to implement, test, and debug. | |
| The <a href="http://lwn.net/Articles/291826/">lockless page cache</a> patches to the Linux kernel are an example of a | |
| wait-free system.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 28 Jun 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/lock-free-vs-wait-free-concurrency</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/lock-free-vs-wait-free-concurrency</guid> | |
| </item> | |
| <item> | |
| <title>Why start a new database company in 2010?</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>We were honored to give a closing keynote talk at <a href="http://en.oreilly.com/mysql2010/">MySQL Conference & Expo | |
| 2010</a>, and wanted to share the video with you. Why start a new database | |
| company? What is RethinkDB all about? What will database technology look like | |
| twenty years from now? In this talk we explore these questions, present some of | |
| the exciting technology we’ve been developing at RethinkDB, and show how it | |
| fits into our larger vision of what database systems may look like in the | |
| future.</p> | |
| <iframe width="640" height="360" src="https://www.youtube.com/embed/uDHc3lkr3Ns?rel=0" frameborder="0" allowfullscreen=""></iframe> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 16 Apr 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/why-start-a-new-database-company-in-2010</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/why-start-a-new-database-company-in-2010</guid> | |
| </item> | |
| <item> | |
| <title>We've raised $1.2m to help build RethinkDB</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>2010 will be an incredibly exciting year for database technology. The amount of | |
| stored information has long been increasing exponentially, presenting | |
| unprecedented challenges for modern technology companies. Dropping RAM prices | |
| and affordable multicore CPUs have drastically changed the hardware profile of | |
| a typical server machine from what it was only five years ago. The emergence of | |
| solid-state drives is about to revolutionize database systems, enabling new | |
| kinds of applications we can barely envision today.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 01 Apr 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/weve-raised-12m-to-help-build-rethinkdb</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/weve-raised-12m-to-help-build-rethinkdb</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB is switching over to Lisp</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p><strong>April Fools! We aren’t switching to Lisp (as much as we love the language). | |
| We couldn’t resist having a bit of fun.</strong></p> | |
| <p>Over the past few months we’ve had many architectural discussions about the | |
| future of database technology. It quickly became apparent to us that C++, the | |
| language we used to develop RethinkDB, is not sufficiently expressive to build | |
| the next-generation database product. We realized that in order to design the | |
| database system of the future, we need to use a programming language of the | |
| future as well.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 01 Apr 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-is-switching-over-to-lisp</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-is-switching-over-to-lisp</guid> | |
| </item> | |
| <item> | |
| <title>Building a world-class team: six mistakes I made early in my career</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>For the past few weeks my primary job at RethinkDB has been to hire world- | |
| class software developers. Recruiting great people is a difficult | |
| process with at least seven components: sourcing candidates, reviewing | |
| resumes, doing technical phone screens, conducting technical interviews, | |
| closing candidates, extending offers, and keeping candidates happy once | |
| they’ve joined. Each component seems simple in principle, but is very subtle | |
| in practice. A testament to this is that all software companies aspire to hire | |
| only the best people, but in practice very few companies achieve this goal.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 22 Mar 2010 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/building-a-world-class-team</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/building-a-world-class-team</guid> | |
| </item> | |
| <item> | |
| <title>High scalability: SQL and computational complexity</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Recently there has been <a href="http://www.yafla.com/dforbes/Getting_Real_about_NoSQL_and_the_SQL_Isnt_Scalable_Lie/">a lot</a> <a href="http://cacm.acm.org/blogs/blog-cacm/50678-the-nosql-discussion-has-nothing-to-do-with-sql/fulltext">of</a> <a href="http://blogs.computerworld.com/15510/the_end_of_sql_and_relational_databases_part_1_of_3">discussion</a> on fundamental | |
| scalability of traditional relational database systems. Many of the blog posts | |
| on this topic give a great overview of some of the immediate issues faced by | |
| engineers while scaling relational databases, but don’t dissect the problem in | |
| a systematic way and with sufficient depth to get to the core issues. I’d like | |
| to dedicate a series of blog posts to the problem of scalability and how it | |
| pertains to relational databases.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 05 Mar 2010 00:00:00 -0800</pubDate> | |
| <link>http://rethinkdb.com/blog/high-scalability-sql-and-computational-complexity</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/high-scalability-sql-and-computational-complexity</guid> | |
| </item> | |
| <item> | |
| <title>More on alignment, ext2, and partitioning on SSDs</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>In our previous <a href="http://rethinkdb.com/blog/page-alignment-on-ssds">post</a> we touched on alignment issues on solid-state drives. | |
| Our test read different-sized blocks from various random points on a raw | |
| device, aligned to a particular boundary. Today we’d like to expand on that | |
| work, and discuss how other factors affect SSD read performance. In addition to | |
| testing different block sizes and alignment boundaries, we tested two other | |
| factors: how the drive is partitioned, and what filesystem is used.</p> | |
| </div> | |
| </description> | |
| <pubDate>Tue, 20 Oct 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/more-on-alignment-ext2-and-partitioning-on-ssds</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/more-on-alignment-ext2-and-partitioning-on-ssds</guid> | |
| </item> | |
| <item> | |
| <title>Page alignment on SSDs</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>In our previous <a href="http://rethinkdb.com/blog/rethinking-b-tree-block-sizes-on-ssds">post</a> we discussed the optimal block-size for B-trees on | |
| solid-state drives. A few people mentioned page alignment - an issue that can | |
| cause serious performance hits on SSDs if unaccounted for. It’s a complex | |
| topic, and we will dedicate two posts to its discussion. In this post we’ll | |
| address alignment behavior while reading directly from the block device. In the | |
| next post, we’ll talk about partitioning the drive, and the effects of reading | |
| from the filesystem instead of reading from the device directly.</p> | |
| </div> | |
| </description> | |
| <pubDate>Thu, 08 Oct 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/page-alignment-on-ssds</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/page-alignment-on-ssds</guid> | |
| </item> | |
| <item> | |
| <title>Rethinking B-tree block sizes on SSDs</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>One of the first questions to answer when running databases on SSDs is what | |
| B-tree block size to use. There are a number of factors that affect this | |
| decision:</p> | |
| <ul> | |
| <li>The type of workload</li> | |
| <li>I/O time to read and write the block size</li> | |
| <li>The size of the cache</li> | |
| </ul> | |
| <p>That’s a lot of variables to consider. For this blog post we assume a fairly | |
| common OLTP scenario - a database that’s dominated by random point queries. We | |
| will also sidestep some of the more subtle caching effects by treating the | |
| caching algorithm as perfectly optimal, and assuming the cost of lookup in RAM | |
| is insignificant.</p> | |
| </div> | |
| </description> | |
| <pubDate>Mon, 05 Oct 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinking-b-tree-block-sizes-on-ssds</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinking-b-tree-block-sizes-on-ssds</guid> | |
| </item> | |
| <item> | |
| <title>Rebench: cutting through the myths of I/O performance</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>A very wise systems programmer once told me: “Don’t guess. Measure.” Since | |
| then, I’ve learned the hard way that guessing too much about performance is | |
| death by a thousand cuts. For RethinkDB, dozens of factors for I/O alone | |
| affect performance (not to mention memory, buses, caches, and CPU cores).</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 02 Oct 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rebench-cutting-through-the-myths-of-io-performance</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rebench-cutting-through-the-myths-of-io-performance</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB performance data</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>It’s been a busy and exciting week since we announced RethinkDB. Of all the | |
| feedback we received, the most common request was for performance numbers. | |
| Before the launch our top priority was correctness. We spent most of our time | |
| testing RethinkDB with Wordpress and adding the missing features. As a result, | |
| performance suffered. In the past week we tuned the engine back up to high | |
| performance. We’re still far from finished with the improvements we want to | |
| make, but we feel that we’ve reached a level of performance we can be proud to | |
| display.</p> | |
| </div> | |
| </description> | |
| <pubDate>Wed, 12 Aug 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-performance-data</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-performance-data</guid> | |
| </item> | |
| <item> | |
| <title>RethinkDB: a new kind of database</title> | |
| <description> | |
| <![CDATA[ | |
| ]]> | |
| <div><p>Today, we’re ready to announce <a href="http://www.rethinkdb.com">RethinkDB</a> – a new kind of database. It’s | |
| been a winding road. For two years, Mike, Leif, and I have been thinking | |
| independently on how to bring a breath of fresh air to the database world. | |
| Three months ago, we came together to form a company and bring our ideas to | |
| reality. In these three months, we’ve raised seed funding from <a href="http://www.ycombinator.com">Y | |
| Combinator</a>, moved to California, and built a MySQL plugin that implements | |
| the core of our vision – a storage engine redesigned for the modern world. | |
| With the exception of storage technology, database design has always been | |
| beautiful. Now, with dropping costs of storage, the advent of solid state | |
| drives, and advances in functional data structures theory, we can finally | |
| replace that last messy component of database management systems with an | |
| elegant, beautiful solution.</p> | |
| </div> | |
| </description> | |
| <pubDate>Fri, 24 Jul 2009 00:00:00 -0700</pubDate> | |
| <link>http://rethinkdb.com/blog/rethinkdb-a-new-kind-of-database</link> | |
| <guid isPermaLink="true">http://rethinkdb.com/blog/rethinkdb-a-new-kind-of-database</guid> | |
| </item> | |
| </channel> | |
| </rss> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment