Skip to content
Snippets Groups Projects
Commit 11edda12 authored by ocelot-inc's avatar ocelot-inc
Browse files

preface.xml tune-up

parent f20eb0b7
No related branches found
No related tags found
No related merge requests found
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<title>Tarantool: an overview</title> <title>Tarantool: an overview</title>
<para> <para>
<productname>Tarantool</productname> is an in-memory NoSQL <productname>Tarantool</productname> is an in-memory NoSQL
database. The code is available for free under the terms of database management system. The code is available for free under the terms of the
<citetitle <citetitle
xlink:href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD xlink:href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD
license</citetitle>. Supported platforms are GNU/Linux, Mac OS license</citetitle>. Supported platforms are GNU/Linux, Mac OS
...@@ -20,89 +20,87 @@ ...@@ -20,89 +20,87 @@
<para> <para>
The server <emphasis role="strong">maintains all its data in The server <emphasis role="strong">maintains all its data in
random-access memory</emphasis>, and therefore has very low read random-access memory</emphasis>, and therefore has very low read
latency. At the same time, a copy of the data latency. The server <emphasis role="strong">keeps persistent copies of
is kept on non-volatile storage (a disk drive), and inserts the data in non-volatile storage</emphasis>, such as disk,
and updates are performed atomically. when users request "snapshots". The server <emphasis role="strong">
maintains a write-ahead log (WAL)</emphasis> to ensure
consistency and crash safety of the persistent copies.
The server <emphasis role="strong">performs inserts and updates atomically</emphasis> --
changes are not considered complete until the WAL is written.
The logging subsystem supports group commit.
</para> </para>
<para> <para>
To ensure atomicity, consistency and crash-safety of the When the rate of data changes is high, the write-ahead log file
persistent copy, a write-ahead log (WAL) is maintained, and (or files) can grow quickly. This uses up disk space, and
each change is recorded in the WAL before it is considered increases the time necessary to restart the server (because
complete. The logging subsystem supports group commit. the server must start with the last snapshot, and then replay
</para> the transactions that are in the log). The solution is to
make snapshots frequently. Therefore the server ensures that
<para> <emphasis role="strong">snapshots are quick, resource-savvy, and non-blocking
If update and delete rate is high, a constantly growing </emphasis>. To accomplish this, the server uses delayed garbage
write-ahead log file (or files) can pose a disk space problem, collection for data pages and uses a copy-on-write technique for
and significantly increase time necessary to restart from disk. index pages. This ensures that the snapshot process has a
A simple solution is employed: the server <emphasis consistent read view.
role="strong">can be requested to save a concise
snapshot</emphasis> of
its current data. A combination of delayed garbage collection
for data pages and <quote>copy-on-write</quote> technique for
index pages is employed to provide the snapshot process
with a consistent read view, so that the snapshot is taken
in a quick, resource-savvy and non-blocking manner.
</para> </para>
<para> <para>
<emphasis role="strong">Tarantool is lock-free</emphasis>. <emphasis role="strong">Tarantool is lock-free</emphasis>.
Instead of the operating system's concurrency primitives, such Instead of the operating system's concurrency primitives, such
as threads and mutexes, Tarantool uses a cooperative as mutexes, Tarantool uses cooperative
multitasking environment to simultaneously operate on multitasking to handle thousands of connections simultaneously.
thousands of connections. A fixed number of independent There is a fixed number of independent execution threads.
execution threads within the server do not share state, but The threads do not share state. Instead they
exchange data using low overhead message queues. While this exchange data using low-overhead message queues. While this
approach limits server scalability to a few CPU cores, approach limits the number of cores that the server will use,
it removes competition for the memory bus and sets it removes competition for the memory bus and ensures peak
the scalability limit to the top of memory and network scalability of memory access and network throughput.
throughput. CPU utilization of a typical highly-loaded CPU utilization of a typical highly-loaded
Tarantool server is under 10%. Tarantool server is under 10%.
</para> </para>
<para> <para>
Unlike most of NoSQL databases, Tarantool supports primary, Unlike most NoSQL DBMSs, Tarantool supports <emphasis role="strong">
<emphasis role="strong"> secondary keys, multi-part secondary index keys and multi-part index keys</emphasis>
keys</emphasis>, HASH, TREE and BITSET index types. as well as primary keys. The possible index types are
HASH, TREE, and BITSET.
</para> </para>
<para> <para>
The key feature of Tarantool is <emphasis As its key feature, Tarantool supports <emphasis
role="strong">support for Lua stored procedures</emphasis>, which role="strong">Lua stored procedures</emphasis>, which
can access and modify data atomically. can access and modify data atomically.
Procedures can be created, modified and dropped at runtime. Users can create, modify and drop Lua procedures at runtime.
</para> </para>
<para> <para>
Use of Lua as an extension language does not end with stored There is a role not only for Lua procedures, but also for Lua programs.
procedures: Lua programs can be used during startup, to define During startup, Lua programs can be used to define
triggers and background tasks, interact with networked peers. triggers and background tasks, or interact with networked peers.
Unlike popular application development frameworks based on Unlike popular application development frameworks based on
"reactor" pattern, networking in server-side Lua is a "reactor" pattern, networking in server-side Lua is
sequential, yet very efficient, as is built on top of the sequential, yet very efficient, as it is built on top of the
cooperating multitasking environment used by the server cooperative multitasking environment that Tarantool itself uses.
itself.
</para> </para>
<para> <para>
Extended with Lua, Tarantool typically replaces Extended with Lua, Tarantool typically replaces
not one but a few existing components with a single multiple components of an existing system. Complex
well-performing system, changing and simplifying complex multi-tier Web application architectures
multi-tier Web application architectures. become simpler, and performance is good.
</para> </para>
<para> <para>
Tarantool supports replication. Replicas may run locally or on Tarantool supports <emphasis role="strong">asynchronous replication
a remote host. Tarantool replication is asynchronous and does </emphasis>, locally or to a remote host. Replication does not
not block writes to the master. When or if the master becomes cause blocking of writes to the master database.
unavailable, the replica can be switched to assume the role of If the master becomes unavailable, a replica can assume the
the master without server restart. master role without requiring a restart.
</para> </para>
<para> <para>
<emphasis role="strong">The software is production-ready</emphasis>. Tarantool is <emphasis role="strong">in production today</emphasis>.
Tarantool has been created and is actively used at Tarantool was created by and is actively used at
<citetitle xlink:href="http://api.mail.ru">Mail.Ru</citetitle>, <citetitle xlink:href="http://api.mail.ru">Mail.Ru</citetitle>,
one of the leading Russian web content providers. At Mail.Ru, one of the leading Russian web content providers. At Mail.Ru
the software serves the <quote>hottest</quote> the software serves the <quote>hottest</quote>
data, such as online users and their sessions, online application data, such as online users and their sessions, online application
properties, mapping between users and their serving shards, properties, mapping between users and their serving shards,
...@@ -110,12 +108,12 @@ ...@@ -110,12 +108,12 @@
</para> </para>
<para> <para>
Outside Mail.Ru the software is used by a growing Outside Mail.Ru the software is used by a growing
number of projects in online gaming, digital marketing, social number of projects in online gaming, digital marketing, and social
media industries. While product development is sponsored by Mail.Ru, the media industries. While product development is sponsored by Mail.Ru, the
roadmap, bugs database and the development process are fully roadmap and the bugs database and the development process are fully
open. The software incorporates patches from dozens of open. The software incorporates patches from dozens of
community contributors, and most of the programming language drivers community contributors. The Tarantool community writes and maintains
are written and maintained by the community. most of the drivers for programming languages.
</para> </para>
</section> </section>
...@@ -128,30 +126,21 @@ ...@@ -128,30 +126,21 @@
xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/">DocBook xlink:href="http://docbook.sourceforge.net/release/xsl/current/doc/">DocBook
XSL</citetitle> formatting conventions:</para> XSL</citetitle> formatting conventions:</para>
<para> <para>
UNIX shell command input is prefixed with '$ ' and is UNIX shell command input is prefixed with '$ ' and is in
formatted using a fixed-width font: a fixed-width font:
<programlisting><prompt>$ </prompt>tarantool_box <option>--background</option> <programlisting><prompt>$ </prompt>tarantool_box <option>--background</option></programlisting>
</programlisting>
</para> </para>
<para> <para>
The same formatting style is used for file names: File names are also in a fixed-width font:
<filename>/path/to/var/dir</filename>. <programlisting><filename>/path/to/var/dir</filename></programlisting>
</para> </para>
<para> <para>
Text that represents user input is formatted in boldface: Text that represents user input is in boldface:
<programlisting> <programlisting><prompt>$ </prompt><userinput>your input here</userinput></programlisting>
<prompt>$ </prompt><userinput>your input here</userinput>
</programlisting>
</para> </para>
<para> <para>
Within user input, replaceable items are printed in italics: Within user input, replaceable items are in italics:
<programlisting> <programlisting><prompt>$ </prompt><userinput>tarantool_box <replaceable>--option</replaceable></userinput></programlisting>
<prompt>$ </prompt><userinput>tarantool_box <replaceable>--option</replaceable></userinput>
</programlisting>
</para> </para>
</section> </section>
<section xml:id="reporting-bugs"> <section xml:id="reporting-bugs">
...@@ -165,12 +154,13 @@ ...@@ -165,12 +154,13 @@
<link xlink:href="https://launchpad.net/~tarantool-developers">tarantool-developers@lists.launchpad.net</link>. <link xlink:href="https://launchpad.net/~tarantool-developers">tarantool-developers@lists.launchpad.net</link>.
</para> </para>
<para> <para>
<emphasis role="strong">Caution:</emphasis> To prevent spam, Launchpad <emphasis role="strong">Caution:</emphasis> To prevent spam, the Launchpad
mailing list software silently drops all mail sent from mailing-list software silently drops all mail coming from
non-registered email addresses. Launchpad registration also non-registered email addresses -- so register with Launchpad
before sending emails. Launchpad registration also
allows you to report bugs and create feature requests. allows you to report bugs and create feature requests.
You can always check whether or not your mail has been You can check that your mail was delivered by looking at the
delivered to the mailing list in the public list archive, <link mailing list archive, <link
xlink:href="https://lists.launchpad.net/tarantool-developers"/>. xlink:href="https://lists.launchpad.net/tarantool-developers"/>.
</para> </para>
</section> </section>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment