RSS
Логотип
Баннер в шапке 1
Баннер в шапке 2

RethinkDB

Product
Date of the premiere of the system: 2015/04/20
Last Release Date: 2016
Technology: DBMS

Content

RethinkDB is the dokumento-focused DBMS, also ReQL providing specialized language of requests is focused on data storage in the JSON format. The product is created and developed by community OpenSource.

2015

RethinkDB 2.0

On April 20, 2015 it became known of release of release of the Release of RethinkDB 2.0 DBMS RethinkDB 2.0 DBMS[1].

This release is published as the first, suitable for industrial implementation. The DBMS code is written in language C ++ and is distributed under license AGPLv3. Libraries for work with RethinkDB are officially provided for JavaScript, Python and Ruby, unofficial the community develops drivers for other languages, including C ++, PHP, Perl and Go.

The main difference of RethinkDB from other DBMS - implementation of the return delivery pattern of results of a request. In the traditional request answer model change tracking requires periodic resending of requests. RethinkDB allows to subscribe for changes (push-architecture) and by that it gives the chance to send a request once and in the live-mode continuously to obtain information on the changes connected with this request of results. Similar approach of informing the application on changes helps to simplify architecture of the applications processing data in real time and to avoid use of external message queues.

One more feature of RethinkDB - language of requests of ReQL, it is integrated into an object model of different programming languages. When using ReQL requests form in the form of the appeal to an object, for example, for change tracking in the table in which the db field is equal to "prod", it is possible to execute "r.db ('rethinkdb') of .table ('stats') .filter ({ 'db': 'prod' }) .changes () .run(conn)", and for selection of records, in which field value of "episodes" more than 100 - "r.table ('tv_shows'). filter (r.row ('episodes'). gt(100))". ReQL supports creation of tables (each record can have the structure), grouping of results, aggregate functions, a possibility of use in code requests for JavaScript and regular expressions. For processing of JavaScript-functions the V8 engine is used.

Screenshot of a window of management of DBMS, 2015


Some differences

  • Ability to manage work of DBMS, including the analysis of statistics and data transfer between nodes in a cluster, through built-in web or the CLI interface.

  • API for a montiring behind work of DBMS;
  • The convenient system of setup of replication for other server or sharding of data in a cluster. Support of both asynchronous, and synchronous replication;
  • The mechanism of caching of requests with any setup of the size of a cache;
  • Possibility of connection of the client to any node of a cluster. All requests will be automatically routed on the necessary nodes. If the request covers data on several nodes, then the request will be shared into subqueries to different servers which will be executed in parallel, and then are aggregated for obtaining summary result;
  • Use of the map-reduce mechanism;
  • Placement of data in B-Tree and storage using the log-like structures created with a careful eye to architecture of Btrfs. Existence of the incremental garbage collector executed in a background and the packer of data. Guaranteeing data consistency after failure;
  • The flexible system of indexes with support of primary and auxiliary keys, geospatial indexes, a possibility of indexation on any expressions. Each request can use only one index.

Representation of RethinkDB 2.0, 2015 DBMS

The official site of a product - rethinkdb.com

There was a release of the version of RethinkDB 2.1

On August 11, 2015 the release of the dokumento-focused Release of RethinkDB 2.1 DBMS RethinkDB 2.1 DBMS became available[2].


Representation of RethinkDB 2.1, 2015

Version 2.1 is remarkable means of ensuring of high availability and considerable processing of tools of a clustering. Among the added features:

  • the mode of automatic replacement of faulty nodes in a cluster,
  • support of adding and removal of nodes without stopping works of a cluster,
  • Asynchronous API for accomplishment of requests in an asynchronous mode (client support is implemented through EventMachine in Ruby and Twisted, Tornado and through asyncio in Python),
  • support of connection of clients using the encoded communication channel,
  • mathematical commands in ReQL (floor, ceil and round).

2016

RethinkDB 2.3

In the spring of 2016 the release of the dokumento-focused RethinkDB 2.3 DBMS providing data storage in the JSON format providing specialized language of requests of ReQL and implementing model of a subscription to changes (an opportunity to send a request once and to obtain information on change of results) became available. In more detail about opportunities of RethinkDB it is possible to read in the announcement of last release. The DBMS code is written in language C ++ and is distributed under license AGPLv3.

Key improvements:

  • The built-in support of TLS for enciphering as client connections with a DB and connections between servers in a cluster. Besides, the possibility of application of HTTPS for work with the built-in managing director of the web interface is provided;
  • The system of separation of privileges allowing to create certain users and to give to them a certain authority of data access. Access rights are set at the levels of a cluster, DB and separate tables and regulate a possibility of performing transactions of adding, change, removal and reading documents and also access to change of settings and installation of network connections;
  • The new fold command which allows to execute transactions of elimination of range of values in ordered data streams is added to the ReQL language. Unlike the reduce command the transactions "fold" are executed over ordered flows. The possibility of accession to an output of the array of elements set through the optional emit parameter is optionally supported;
  • Support of work on the Windows platform is added.

Notes