From 1fc4552531cf4df655a69ccdc31093efcdc97a18 Mon Sep 17 00:00:00 2001
From: Konstantin Osipov <kostja@tarantool.org>
Date: Sat, 4 May 2013 18:34:10 +0400
Subject: [PATCH] Update the introduction page.

---
 doc/user/preface.xml  | 107 ++++++++++++---------
 doc/www-data.in/intro | 212 ++++++++++++++++++++++++++++++++++--------
 2 files changed, 238 insertions(+), 81 deletions(-)

diff --git a/doc/user/preface.xml b/doc/user/preface.xml
index a42133d4a9..9df3db6548 100644
--- a/doc/user/preface.xml
+++ b/doc/user/preface.xml
@@ -8,33 +8,32 @@
 <section xml:id="preface">
   <title>Tarantool/Box: an overview</title>
   <para>
-    <productname>Tarantool/Box</productname>, or simply 
-    <productname>Tarantool</productname>,
-    is a high performance NoSQL database.  The code is
-    available for free under the terms of <citetitle
+    <productname>Tarantool/Box</productname> is an in-memory NoSQL
+    database. The code is available for free under the terms of
+    <citetitle
     xlink:href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD
-    license</citetitle>. Supported platforms are GNU/Linux, Mac OS and
-    FreeBSD.
+    license</citetitle>. Supported platforms are GNU/Linux, Mac OS
+    and FreeBSD.
 
   </para>
 
   <para>
     The server <emphasis role="strong">maintains all its data in
-    random-access memory</emphasis>, and therefore can handle read
-    requests blazingly fast.  At the same time, a copy of the data
+    random-access memory</emphasis>, and therefore has very low read
+    latency. At the same time, a copy of the data
     is kept on non-volatile storage (a disk drive), and inserts
     and updates are performed atomically.
   </para>
 
   <para>
     To ensure atomicity, consistency and crash-safety of the
-    persistent copy, a write-ahead
-    log (WAL) is maintained, and each change is recorded
-    in the WAL before it is considered complete.
+    persistent copy, a write-ahead log (WAL) is maintained, and
+    each change is recorded in the WAL before it is considered
+    complete. The logging subsystem supports group commit.
   </para>
 
   <para>
-    If the update and delete rate is high, a constantly growing
+    If update and delete rate is high, a constantly growing
     write-ahead log file (or files) can pose a disk space problem,
     and significantly increase time necessary to restart from disk.
     A simple solution is employed: the server <emphasis
@@ -48,55 +47,77 @@
   </para>
 
   <para>
-    Tarantool supports replication. Replicas may run locally or
-    on a remote host. Tarantool replication
-    is asynchronous and does not block writes to the
-    master. When or if the master becomes unavailable, the replica
-    can be switched to assume the role of the master.
+    <emphasis role="strong">Tarantool is lock-free</emphasis>.
+    Instead of the operating system's concurrency primitives, such
+    as threads and mutexes, Tarantool uses a cooperative
+    multitasking environment to simultaneously operate on
+    thousands of connections. A fixed number of independent
+    execution threads within the server do not share state, but
+    exchange data using low overhead message queues. While this
+    approach limits server scalability to a few CPU cores,
+    it removes competition for the memory bus and sets
+    the scalability limit to the top of memory and network
+    throughput.  CPU utilization of a typical highly-loaded
+    Tarantool server is under 10%.
   </para>
 
   <para>
-    <emphasis role="strong">Tarantool is lock-free</emphasis>.
-    Instead of the underlying operating system's concurrency
-    primitives, Tarantool uses a cooperative multitasking environment
-    to simultaneously operate on thousands of connections. While
-    this approach limits server scalability to a single CPU core, in
-    practice it removes competition for the memory bus and sets the
-    scalability limit to the top of memory and network throughput.
-    CPU utilization of a typical highly-loaded Tarantool server is
-    under 10%.
+    Unlike most of NoSQL databases, Tarantool supports primary,
+    <emphasis role="strong"> secondary keys, multi-part
+    keys</emphasis>, HASH, TREE and BITSET index types.
   </para>
 
   <para>
-    The key feature of Tarantool is <emphasis role="strong">support
-    for stored procedures</emphasis>, which
-    can access and modify data atomically. With stored procedures,
-    it's possible to turn Tarantool into a highly
-    flexible and extremely fast social web application server.
+    The key feature of Tarantool is <emphasis
+    role="strong">support for Lua stored procedures</emphasis>, which
+    can access and modify data atomically.
+    Procedures can be created, modified and dropped at runtime.
+  </para>
+  <para>
+    Use of Lua as an extension language does not end with stored 
+    procedures: Lua programs can be used during startup, to define
+    triggers and background tasks, interact with networked peers.
+    Unlike popular application development frameworks implemented
+    around "reactor" pattern, networking in server-side Lua is
+    sequential, yet very efficient, as is built on top of the
+    cooperating multitasking environment used by the server
+    itself.
+    </para>
+    <para>
+    Extended with Lua, Tarantool/Box typically replaces
+    more not one but a few existing components with a single
+    well-performing system, changing and simplifying complex
+    multi-tier Web application architectures.
+  </para>
+
+  <para>
+    Tarantool supports replication. Replicas may run locally or on
+    a remote host. Tarantool replication is asynchronous and does
+    not block writes to the master. When or if the master becomes
+    unavailable, the replica can be switched to assume the role of
+    the master without server restart.
   </para>
 
   <para>
     <emphasis role="strong">The software is production-ready</emphasis>.
-    Tarantool has been developed and is actively used at
+    Tarantool has been created and is actively used at
     <citetitle xlink:href="http://api.mail.ru">Mail.Ru</citetitle>,
     one of the leading Russian web content providers. At Mail.Ru,
     the software serves the <quote>hottest</quote>
     data, such as online users and their sessions, online application
     properties, mapping between users and their serving shards,
     and so on.
+   </para>
+   <para>
+   Outside Mail.Ru the software is used by a growing
+    number of projects in online gaming, digital marketing, social
+    media industries. While product development is sponsored by Mail.Ru, the
+    roadmap, bugs database and the development process are fully
+    open. The software incorporates patches from dozens of
+    community contributors, and most of the programming language drivers
+    are written and maintained by the community.
   </para>
 
-  <para>
-    To conclude, Tarantool/Box is ideal for highly volatile and/or
-    frequently accessed Web data. With Tarantool, performance overhead
-    on serving data is minimal: a single server can easily deal with
-    tens or even hundreds of thousands of requests per second.
-    Snapshots can be made when Web user activity is at its lowest,
-    for example at night, and thus add little or no restraint on the
-    top throughput of the system.  If the master becomes
-    unavailable, a replica can assume the role of the master with
-    minimal downtime.
-  </para>
 </section>
 <section>
   <title>Conventions</title>
diff --git a/doc/www-data.in/intro b/doc/www-data.in/intro
index 5e5d72710c..e555505402 100644
--- a/doc/www-data.in/intro
+++ b/doc/www-data.in/intro
@@ -2,57 +2,193 @@
 
 ## What is Tarantool?
 
-Tarantool/Box, or simply Tarantool, is a high performance NoSQL database. The code is available for free under the terms of <em><a href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD">BSD license</a></em>. Supported platforms are GNU/Linux, Mac OS and FreeBSD.
+Tarantool/Box is an in-memory NoSQL
+database. The code is available for free under the terms of
+<em class="citetitle"><a class="citetitle" href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD" target="_top">BSD
+license</a></em>. Supported platforms are GNU/Linux, Mac OS
+and FreeBSD.
 
 ## An overview of the architecture
 
-The server <span class="strong"><strong>maintains all data in random-access memory</strong></span>, and therefore can handle read requests blazingly fast.  At the same time, a copy of the data is kept on non-volatile storage (a disk drive), and inserts and updates are performed atomically.
-
-To ensure atomicity, consistency and crash-safety of the persistent copy, a write-ahead log (WAL) is maintained, and each change is recorded in the WAL before it is considered complete.
-
-If update and delete rate is high, a constantly growing write-ahead log file (or files) can pose a disk space problem, and significantly increase time necessary to restart from disk. A simple solution is employed: the server <span class="strong"><strong>can be requested to save a concise snapshot</strong></span> of its current data. The underlying operating system's <span class="quote">&#8220;<span class="quote">copy-on-write</span>&#8221;</span> feature is employed to take the snapshot in a quick, resource-savvy and non-blocking manner. The <span class="quote">&#8220;<span class="quote">copy-on-write</span>&#8221;</span> technique guarantees that snapshotting has minimal impact on server performance.
-
-<span class="strong"><strong>Tarantool is lock-free</strong></span>. Instead of the underlying operating system's concurrency primitives, Tarantool uses cooperative multitasking environment to simultaneously operate on thousands of connections. While this approach limits server scalability to few CPU cores, in practice it removes competition for the memory bus and sets the scalability limit to the top of memory and network throughput. CPU utilization of a typical highly-loaded Tarantool server is under 10%.
-
-## Main features
-
-A key feature of Tarantool is support for stored procedures, which can
-access and modify data atomically. Procedures can be created, modified,
-dropped at runtime. With stored procedures, it's possible to
-turn Tarantool into a highly flexible and extremely fast social web
-application server.
-
-Tarantool supports replication. Replicas may run locally or on a remote host. Tarantool replication is asynchronous and does not block writes to the master. When or if the master becomes unavailable, the replica can be switched to assume the role of the master.
+The server <span class="strong"><strong>maintains all its data in
+random-access memory</strong></span>, and therefore has very low read
+latency. At the same time, a copy of the data
+is kept on non-volatile storage (a disk drive), and inserts
+and updates are performed atomically.
+
+To ensure atomicity, consistency and crash-safety of the
+persistent copy, a write-ahead log (WAL) is maintained, and
+each change is recorded in the WAL before it is considered
+complete. The logging subsystem supports group commit.
+
+If update and delete rate is high, a constantly growing write-ahead log file
+(or files) can pose a disk space problem, and significantly increase time
+necessary to restart from disk.  A simple solution is employed: the server
+<span class="strong"><strong>can be requested to save a concise
+snapshot</strong></span> of its current data. The underlying operating
+system's <span class="quote">&#8220;<span
+class="quote">copy-on-write</span>&#8221;</span> feature is employed to take
+the snapshot in a quick, resource-savvy and non-blocking manner.  The <span
+class="quote">&#8220;<span class="quote">copy-on-write</span>&#8221;</span>
+technique guarantees that snapshotting has minimal impact on server
+performance.
+
+<span class="strong"><strong>Tarantool is lock-free</strong></span>.
+Instead of the operating system's concurrency primitives, such
+as threads and mutexes, Tarantool uses a cooperative
+multitasking environment to simultaneously operate on
+thousands of connections. A fixed number of independent
+execution threads within the server do not share state, but
+exchange data using low overhead message queues. While this
+approach limits server scalability to a few CPU cores,
+it removes competition for the memory bus and sets
+the scalability limit to the top of memory and network
+throughput.  CPU utilization of a typical highly-loaded
+Tarantool server is under 10%.
+
+## Key features
+
+Unlike most of NoSQL databases, Tarantool supports primary, <span
+class="strong"><strong> secondary keys, multi-part keys</strong></span>,
+HASH, TREE and BITSET index types.
+
+Tarantool supports <span class="strong"><strong>Lua stored
+procedures</strong></span>, which can access and modify data atomically.
+Procedures can be created, modified and dropped at runtime.
+
+Use of Lua as an extension language does not end with stored 
+procedures: Lua programs can be used during startup, to define
+triggers and background tasks, interact with networked peers.
+Unlike popular application development frameworks implemented
+around "reactor" pattern, networking in server-side Lua is
+sequential, yet very efficient, as is built on top of the
+cooperating multitasking environment used by the server
+itself.
+
+Extended with Lua, Tarantool/Box typically replaces
+more not one but a few existing components with a single
+well-performing system, changing and simplifying complex
+multi-tier Web application architectures.
+
+Tarantool supports replication. Replicas may run locally or on
+a remote host. Tarantool replication is asynchronous and does
+not block writes to the master. When or if the master becomes
+unavailable, the replica can be switched to assume the role of
+the master without server restart.
 
 ## How stable is the software?
 
 <span class="strong"><strong>The software is
-production-ready</strong></span>. Tarantool has been developed and is
-actively used at <em><a href="http://api.mail.ru">Mail.Ru</a></em> one of
-the leading Russian web content providers, since 2008. At Mail.Ru, the software serves the <span class="quote">&#8220;<span class="quote">hottest</span>&#8221;</span> data, such as online users and their sessions, online application properties, the map between users and their serving shards.
-
-To conclude, Tarantool/Box is ideal for highly volatile and/or highly accessed Web data. With Tarantool, performance overhead on serving data is minimal: a single server can easily deal with tens or even hundreds of thousands of requests per second. Snapshots can be made when Web user activity is at its lowest, for example at night, and thus add little or no restraint on the top throughput of the system.  If the master becomes unavailable, a replica can assume the role of the master with minimal downtime.
+production-ready</strong></span>.  Tarantool has been created and is
+actively used at <em class="citetitle"><a class="citetitle"
+href="http://api.mail.ru" target="_top">Mail.Ru</a></em>, one of the leading
+Russian web content providers. At Mail.Ru, the software serves the <span
+class="quote">&#8220;<span class="quote">hottest</span>&#8221;</span> data,
+such as online users and their sessions, online application properties,
+mapping between users and their serving shards, and so on.
+
+Outside Mail.Ru
+the software is used by a growing number of projects in online gaming,
+digital marketing, social media industries. While product development is
+sponsored by Mail.Ru, the roadmap, bugs database and the development process
+are fully open. The software incorporates patches from dozens of community
+contributors, and most of the programming language drivers are written and
+supported by the community.
 
 {% page intro ru %}
 
-<b>Tarantool</b> &mdash; однопоточный TCP сервер, реализующий кооперативную многозадачность. Разрабатывается с учетом работы под высокими нагрузками (десятки тысяч RPS). Можно выделить две логические составляющие: ядро и модули. В настоящее время подключение модулей производится на этапе компиляции. На уровне ядра реализуется базовый функционал (общение по сети, работа с бинарными логами, репликация по сети, быстрое переключение на резервный сервер и т.п.). В модулях реализуется бизнес логика конкретного приложения с использованием API ядра.
+## What is Tarantool?
 
-<b>Tarantool/Box</b> &mdash; хранилище данных в памяти, ключ-значение.
+Tarantool/Box is an in-memory NoSQL
+database. The code is available for free under the terms of
+<em class="citetitle"><a class="citetitle" href="http://www.gnu.org/licenses/license-list.html#ModifiedBSD" target="_top">BSD
+license</a></em>. Supported platforms are GNU/Linux, Mac OS
+and FreeBSD.
 
-Сервер разрабатывался для внутренних целей в компании Mail.Ru. В процессе эксплуатации система хорошо зарекомендовала себя и была внедрена во многих проектах компании. Благодаря высокой производительности и надежности системы в условиях больших нагрузок, удалось повысить стабильность предоставляемых сервисов. Первая версия сервера, ставшего основой для целого семейства хранилищ, появилась в 2008 году. Tarantool &ndash; переработанный и усовершенствованный сервер, предназначенный для построения специализированных хранилищ. Код написан на языке С и использует расширения gcc.
+## An overview of the architecture
 
-__Характеристики__
+The server <span class="strong"><strong>maintains all its data in
+random-access memory</strong></span>, and therefore has very low read
+latency. At the same time, a copy of the data
+is kept on non-volatile storage (a disk drive), and inserts
+and updates are performed atomically.
+
+To ensure atomicity, consistency and crash-safety of the
+persistent copy, a write-ahead log (WAL) is maintained, and
+each change is recorded in the WAL before it is considered
+complete. The logging subsystem supports group commit.
+
+If update and delete rate is high, a constantly growing write-ahead log file
+(or files) can pose a disk space problem, and significantly increase time
+necessary to restart from disk.  A simple solution is employed: the server
+<span class="strong"><strong>can be requested to save a concise
+snapshot</strong></span> of its current data. The underlying operating
+system's <span class="quote">&#8220;<span
+class="quote">copy-on-write</span>&#8221;</span> feature is employed to take
+the snapshot in a quick, resource-savvy and non-blocking manner.  The <span
+class="quote">&#8220;<span class="quote">copy-on-write</span>&#8221;</span>
+technique guarantees that snapshotting has minimal impact on server
+performance.
+
+<span class="strong"><strong>Tarantool is lock-free</strong></span>.
+Instead of the operating system's concurrency primitives, such
+as threads and mutexes, Tarantool uses a cooperative
+multitasking environment to simultaneously operate on
+thousands of connections. A fixed number of independent
+execution threads within the server do not share state, but
+exchange data using low overhead message queues. While this
+approach limits server scalability to a few CPU cores,
+it removes competition for the memory bus and sets
+the scalability limit to the top of memory and network
+throughput.  CPU utilization of a typical highly-loaded
+Tarantool server is under 10%.
+
+## Key features
+
+Unlike most of NoSQL databases, Tarantool supports primary, <span
+class="strong"><strong> secondary keys, multi-part keys</strong></span>,
+HASH, TREE and BITSET index types.
+
+Tarantool supports <span class="strong"><strong>Lua stored
+procedures</strong></span>, which can access and modify data atomically.
+Procedures can be created, modified and dropped at runtime.
+
+Use of Lua as an extension language does not end with stored 
+procedures: Lua programs can be used during startup, to define
+triggers and background tasks, interact with networked peers.
+Unlike popular application development frameworks implemented
+around "reactor" pattern, networking in server-side Lua is
+sequential, yet very efficient, as is built on top of the
+cooperating multitasking environment used by the server
+itself.
+
+Extended with Lua, Tarantool/Box typically replaces
+more not one but a few existing components with a single
+well-performing system, changing and simplifying complex
+multi-tier Web application architectures.
+
+Tarantool supports replication. Replicas may run locally or on
+a remote host. Tarantool replication is asynchronous and does
+not block writes to the master. When or if the master becomes
+unavailable, the replica can be switched to assume the role of
+the master without server restart.
 
-* отсутствие фрагментации основной памяти и деградации производительности при работе с множеством маленьких объектов, благодаря иcпользованию собственных аллокаторов;
-* возможность работы с большими объемами данных;
-* наличие файла snapshot, в котором сохраняется состояние всех данных базы на момент записи на диск;
-* способность сохранять все изменения состояния базы данных (логирование транзакций в файлах бинарных логов) и автоматически восстанавливать информацию после перезапуска системы;
-* высокая доступность системы (в случае программных или аппаратных сбоев происходит автоматическое переключение на доступную реплику);
-* совместимость с протоколом memcached;
-* возможность обновлять систему незаметно от клиентских сервисов с помощью применения локальных реплик;
-* репликация данных по сети;
-* простой бинарный протокол для реализации дополнительной логики;
-* Собирается только под gcc и clang;
-* Тестировался только под Linux.
+## How stable is the software?
 
+<span class="strong"><strong>The software is
+production-ready</strong></span>.  Tarantool has been created and is
+actively used at <em class="citetitle"><a class="citetitle"
+href="http://api.mail.ru" target="_top">Mail.Ru</a></em>, one of the leading
+Russian web content providers. At Mail.Ru, the software serves the <span
+class="quote">&#8220;<span class="quote">hottest</span>&#8221;</span> data,
+such as online users and their sessions, online application properties,
+mapping between users and their serving shards, and so on.
+
+Outside Mail.Ru
+the software is used by a growing number of projects in online gaming,
+digital marketing, social media industries. While product development is
+sponsored by Mail.Ru, the roadmap, bugs database and the development process
+are fully open. The software incorporates patches from dozens of community
+contributors, and most of the programming language drivers are written and
+supported by the community.
 
-- 
GitLab