This is an automated email from the ASF dual-hosted git repository.

abudnikov pushed a commit to branch IGNITE-7595
in repository https://gitbox.apache.org/repos/asf/ignite.git

commit 3441622d61147bb004f94ead37c7107eaf6ee596
Author: abudnikov <[email protected]>
AuthorDate: Tue Aug 18 10:31:42 2020 +0300

    add quick start guides
---
 docs/_docs/quick-start/cpp.adoc     |  88 ++++++++++++++++++++
 docs/_docs/quick-start/dotnet.adoc  |  77 ++++++++++++++++++
 docs/_docs/quick-start/index.adoc   |   3 +
 docs/_docs/quick-start/java.adoc    | 157 ++++++++++++++++++++++++++++++++++++
 docs/_docs/quick-start/nodejs.adoc  |  90 +++++++++++++++++++++
 docs/_docs/quick-start/php.adoc     | 110 +++++++++++++++++++++++++
 docs/_docs/quick-start/python.adoc  |  73 +++++++++++++++++
 docs/_docs/quick-start/restapi.adoc |  83 +++++++++++++++++++
 docs/_docs/quick-start/sql.adoc     | 114 ++++++++++++++++++++++++++
 9 files changed, 795 insertions(+)

diff --git a/docs/_docs/quick-start/cpp.adoc b/docs/_docs/quick-start/cpp.adoc
new file mode 100644
index 0000000..9c45ff2
--- /dev/null
+++ b/docs/_docs/quick-start/cpp.adoc
@@ -0,0 +1,88 @@
+= Ignite for C++
+
+This chapter explains system requirements for running Ignite and how to 
install Ignite, start a cluster, and run a simple Hello World example in C++.
+
+== Prerequisites
+
+Ignite C++ was officially tested on:
+
+include::includes/prereqs.adoc[]
+
+and:
+
+[cols="1,3"]
+|=======================================================================
+|Visual Studio |2010 and above
+|=======================================================================
+
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+== Starting an Ignite Node
+
+include::includes/starting-node.adoc[]
+
+NOTE: Ignite for C++ supports a thick client and a thin client.
+Because this guide focuses on the thin client, you can run the examples below, 
connecting to the Java-based nodes you just started.
+
+Once the cluster is started, you can use the Ignite C++ thin client to perform 
cache operations (things like getting or putting data, or using SQL).
+
+== Getting Started with Ignite and C++
+
+Ignite ships with a robust {cpp} client.
+To get started with Ignite and {cpp}, you will need to be familiar with 
building {cpp} applications.
+
+. Install `openssl` and add it to your path.
+. If you haven't already, download/install <<Installing Ignite,Apache Ignite>>.
+. Navigate to the `{IGNITE_HOME}/platforms/cpp/project/vs` folder.
+. Launch the appropriate Visual Studio solution file for your system 
(`ignite.sln` is for 64-bit).
+. Build the solution.
+
+From here, you can create your own code, or run one of the existing examples 
located in the `{IGNITE_HOME}/platforms/cpp/examples/project/vs` directory.
+
+There is much more information about how to build, test, and use GGCE for 
{cpp} in the `readme.txt` and `DEVNOTES.txt` files located in the 
`{IGNITE_HOME}/platforms/cpp` folder.
+
+For information about the {cpp} thin client, see 
link:thin-clients/cpp-thin-client[C++ Thin Client].
+
+== C++ for Unix
+
+On unix systems, you can use the command line to build and run the examples 
included in the Ignite distribution.
+
+=== Prerequisites
+The following packages should be installed:
+- C++ compiler
+- libssl
+- autotools
+- automake
+- libtool
+
+=== Building C++ Ignite
+
+. Download and unzip the Ignite binary release into a directory. We'll refer 
to this as `{IGNITE_HOME}`.
+. `cd {IGNITE_HOME}/platforms/cpp`
+. `libtoolize && aclocal && autoheader && automake --add-missing && autoreconf`
+. `./configure`
+. `make`
+
+=== Running the Thick Client Example
+
+. `cd {IGNITE_HOME}/platforms/cpp/examples`
+. `libtoolize && aclocal && autoheader && automake --add-missing && autoreconf`
+. `./configure`
+. `cd put-get-example`
+. `make`
+. `./ignite-put-get-example`
+
+
+== Next Steps
+
+From here, you may want to:
+
+* Explore the link:{githubUrl}/modules/platforms/cpp/examples[additional C++ 
examples] included with Ignite
+
+
+
+
+
diff --git a/docs/_docs/quick-start/dotnet.adoc 
b/docs/_docs/quick-start/dotnet.adoc
new file mode 100644
index 0000000..a15dff0
--- /dev/null
+++ b/docs/_docs/quick-start/dotnet.adoc
@@ -0,0 +1,77 @@
+= Ignite for .NET/C#
+
+This chapter explains how to use .NET Core to build and run a simple Hello 
World example in .NET that starts a node, puts a value into the node and then 
gets the value.
+
+
+== Prerequisites
+
+Ignite.NET was officially tested on:
+
+include::includes/dotnet-prerequisites.adoc[]
+
+
+== Running a Simple .NET Example
+
+[NOTE]
+====
+Ignite for .NET supports a thick client and a thin client. Because this guide 
focuses on the _thick_ client, you can run the example below after adding the 
Ignite library package. You do not need to download and install the Ignite 
distribution to run the example.
+
+For information about the .NET thin client, see 
link:thin-clients/dotnet-thin-client[.NET Thin Client].
+====
+
+//TODO??: WARNING: If you use the thick client without downloading and 
installing GridGain distribution, some functionality (Logging, etc.) will be 
missing or not configured.
+
+. Install .NET Core SDK (version 2+): https://dotnet.microsoft.com/download
+
+. Use the CLI (unix shell, Windows CMD or PowerShell, etc.) to run the 
following two commands:
++
+`> dotnet new console`
++
+This creates an empty project, which includes a project file with metadata and 
a .cs file with code.
++
+And:
++
+`> dotnet add package Apache.Ignite`
++
+This modifies the project file - `.csproj` - to add dependencies.
+
+. Open `Program.cs` in any text editor and replace the contents with the 
following:
++
+[tabs]
+--
+tab:C#/.NET[]
+[source,csharp]
+----
+using System;
+using Apache.Ignite.Core;
+
+namespace ggqsg
+{
+    class Program
+    {
+        static void Main(string[] args)
+        {
+          var ignite = Ignition.Start();
+          var cache = ignite.GetOrCreateCache<int, string>("my-cache");
+          cache.Put(1, "Hello, World");
+          Console.WriteLine(cache.Get(1));
+        }
+    }
+}
+----
+--
+
+. Save and then run the program:
++
+`> dotnet run`
+
+And that's it! You should see a node launch and then display "Hello, World".
+
+
+== Next Steps
+
+From here, you may want to:
+
+* Explore the link:{githubUrl}/modules/platforms/dotnet/examples[additional 
examples^] included with Ignite
+
+
diff --git a/docs/_docs/quick-start/index.adoc 
b/docs/_docs/quick-start/index.adoc
new file mode 100644
index 0000000..457a189
--- /dev/null
+++ b/docs/_docs/quick-start/index.adoc
@@ -0,0 +1,3 @@
+---
+layout: toc
+---
diff --git a/docs/_docs/quick-start/java.adoc b/docs/_docs/quick-start/java.adoc
new file mode 100644
index 0000000..5583076
--- /dev/null
+++ b/docs/_docs/quick-start/java.adoc
@@ -0,0 +1,157 @@
+= Ignite for Java
+
+This page explains system requirements for running Ignite, how to install 
Ignite, start a cluster and run a simple Hello World example.
+
+== Prerequisites
+
+Ignite was officially tested on:
+
+include::includes/prereqs.adoc[]
+
+If you use Java version 11 or later, see <<Running Ignite with Java 11 or 
later>> for details.
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+
+== Starting a Node
+
+include::includes/starting-node.adoc[]
+
+== Running Your First Application
+
+
+Once the cluster is started, follow the steps below to run a simple HelloWorld 
example.
+
+=== 1. Add Maven Dependency
+
+
+The easiest way to get started with Ignite in Java is to use Maven dependency 
management.
+
+Create a new Maven project with your favorite IDE and add the following 
dependencies in your project’s pom.xml file.
+
+[source,xml,subs="attributes,specialchars"]
+----
+<properties>
+    <ignite.version>{version}</ignite.version>
+</properties>
+
+<dependencies>
+    <dependency>
+        <groupId>org.apache.ignite</groupId>
+        <artifactId>ignite-core</artifactId>
+        <version>${ignite.version}</version>
+    </dependency>
+    <dependency>
+        <groupId>org.apache.ignite</groupId>
+        <artifactId>ignite-spring</artifactId>
+        <version>${ignite.version}</version>
+    </dependency>
+</dependencies>
+----
+
+=== 2. HelloWorld.java
+
+
+Here is a sample HelloWord.java file that prints 'Hello World' and some other 
environment details on all
+the server nodes of the cluster.
+The sample shows how to prepare a cluster configuration with Java APIs, create 
a sample cache with some data in it, and execute custom Java logic on the 
server nodes.
+
+[source,java]
+----
+public class HelloWorld {
+    public static void main(String[] args) throws IgniteException {
+        // Preparing IgniteConfiguration using Java APIs
+        IgniteConfiguration cfg = new IgniteConfiguration();
+
+        // The node will be started as a client node.
+        cfg.setClientMode(true);
+
+        // Classes of custom Java logic will be transferred over the wire from 
this app.
+        cfg.setPeerClassLoadingEnabled(true);
+
+        // Setting up an IP Finder to ensure the client can locate the servers.
+        TcpDiscoveryMulticastIpFinder ipFinder = new 
TcpDiscoveryMulticastIpFinder();
+        
ipFinder.setAddresses(Collections.singletonList("127.0.0.1:47500..47509"));
+        cfg.setDiscoverySpi(new TcpDiscoverySpi().setIpFinder(ipFinder));
+
+        // Starting the node
+        Ignite ignite = Ignition.start(cfg);
+
+        // Create an IgniteCache and put some values in it.
+        IgniteCache<Integer, String> cache = 
ignite.getOrCreateCache("myCache");
+        cache.put(1, "Hello");
+        cache.put(2, "World!");
+
+        System.out.println(">> Created the cache and add the values.");
+
+        // Executing custom Java compute task on server nodes.
+        ignite.compute(ignite.cluster().forServers()).broadcast(new 
RemoteTask());
+
+        System.out.println(">> Compute task is executed, check for output on 
the server nodes.");
+
+        // Disconnect from the cluster.
+        ignite.close();
+    }
+
+    /**
+     * A compute tasks that prints out a node ID and some details about its OS 
and JRE.
+     * Plus, the code shows how to access data stored in a cache from the 
compute task.
+     */
+    private static class RemoteTask implements IgniteRunnable {
+        @IgniteInstanceResource
+        Ignite ignite;
+
+        @Override public void run() {
+            System.out.println(">> Executing the compute task");
+
+            System.out.println(
+                "   Node ID: " + ignite.cluster().localNode().id() + "\n" +
+                "   OS: " + System.getProperty("os.name") +
+                "   JRE: " + System.getProperty("java.runtime.name"));
+
+            IgniteCache<Integer, String> cache = ignite.cache("myCache");
+
+            System.out.println(">> " + cache.get(1) + " " + cache.get(2));
+        }
+    }
+}
+----
+[NOTE]
+====
+Don't forget to add imports for HelloWorld.java. It should be trivial as long 
as Maven solves all of the dependencies.
+
+Plus, you might need to add these settings to your pom.xml if the IDE keeps 
using Java compiler from a version earlier than 1.8:
+[source,xml]
+----
+<build>
+    <plugins>
+        <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <configuration>
+                <source>1.8</source>
+                <target>1.8</target>
+            </configuration>
+        </plugin>
+    </plugins>
+</build>
+----
+====
+
+
+=== 3. Run HelloWorld.java
+
+
+Run HelloWorld.java. You will see 'Hello World!' and other environment details 
printed on all the server nodes.
+
+
+== Further Examples
+
+include::includes/exampleprojects.adoc[]
+
+== Running Ignite with Java 11 or later
+
+include::includes/java9.adoc[]
+
diff --git a/docs/_docs/quick-start/nodejs.adoc 
b/docs/_docs/quick-start/nodejs.adoc
new file mode 100644
index 0000000..0036963
--- /dev/null
+++ b/docs/_docs/quick-start/nodejs.adoc
@@ -0,0 +1,90 @@
+= Ignite for Node.JS
+
+This chapter explains system requirements for running Ignite, how to install 
Ignite, start a cluster and run a simple Hello World example using a thin 
client for Node.js.
+
+Thin Client is a lightweight Ignite connection mode.
+It does not participate in cluster, never holds any data, or performs 
computations.
+All it does is establish a socket connection to an individual Ignite node and 
perform all operations through that node.
+
+== Prerequisites
+
+Ignite was tested on:
+
+include::includes/prereqs.adoc[]
+
+and:
+
+[width="100%",cols="1,3",options=""]
+|=======================================================================
+|Node.js |Version 8 or higher is required. Either download the Node.js 
pre-built binary for the target platform, or install Node.js via package 
manager.
+|=======================================================================
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+Once that's done, execute the following command to install the Node.js Thin 
Client package:
+
+include::includes/install-nodejs-npm.adoc[]
+
+== Starting a Node
+
+Before connecting to Ignite from Node.JS thin client, you must start at least 
one cluster node.
+
+include::includes/starting-node.adoc[]
+
+== Running Your First Application
+
+
+Once the cluster is started, you can use the Ignite Node.js thin client to 
perform cache operations.
+Your Ignite installation includes several ready-to-run Node.JS examples in the 
`{ignite_nodejs_dir}/platforms/nodejs/examples` directory. For example,
+
+[source,shell]
+----
+cd {IGNITE_HOME}/platforms/nodejs/examples
+node CachePutGetExample.js
+----
+
+Assuming that the server node is running locally, and that you have completed
+all of the pre-requisites listed above, here is a very simple _HelloWorld_
+example that puts and gets values from the cache. If you followed the
+instructions above, and if you place this hello world example in your examples
+folder, it should work.
+
+[source,javascript]
+----
+const IgniteClient = require('apache-ignite-client');
+const IgniteClientConfiguration = IgniteClient.IgniteClientConfiguration;
+const ObjectType = IgniteClient.ObjectType;
+const CacheEntry = IgniteClient.CacheEntry;
+
+async function performCacheKeyValueOperations() {
+    const igniteClient = new IgniteClient();
+    try {
+        await igniteClient.connect(new 
IgniteClientConfiguration('127.0.0.1:10800'));
+        const cache = (await igniteClient.getOrCreateCache('myCache')).
+            setKeyType(ObjectType.PRIMITIVE_TYPE.INTEGER);
+        // put and get value
+        await cache.put(1, 'Hello World');
+        const value = await cache.get(1);
+        console.log(value);
+
+    }
+    catch (err) {
+        console.log(err.message);
+    }
+    finally {
+        igniteClient.disconnect();
+    }
+}
+
+performCacheKeyValueOperations();
+----
+
+== Next Steps
+
+From here, you may want to:
+
+* Read more about using Ignite Node.js Thin Client 
link:thin-clients/nodejs-thin-client[here]
+//* Explore the 
link:https://github.com/gridgain/nodejs-thin-client/tree/master/examples[additional
 examples] included with Ignite
+
diff --git a/docs/_docs/quick-start/php.adoc b/docs/_docs/quick-start/php.adoc
new file mode 100644
index 0000000..75e2893
--- /dev/null
+++ b/docs/_docs/quick-start/php.adoc
@@ -0,0 +1,110 @@
+= Ignite for PHP
+
+This chapter explains system requirements for running Ignite and how to 
install Ignite, start a cluster, and run a simple Hello World example using a 
thin client for PHP.
+
+Thin Client is a lightweight Ignite connection mode.
+It does not participate in cluster, never holds any data, or performs 
computations.
+All it does is establish a socket connection to an individual Ignite node and 
perform all operations through that node.
+
+== Prerequisites
+
+Ignite was tested on:
+
+include::includes/prereqs.adoc[]
+
+and:
+
+[cols="1,3"]
+|=======================================================================
+|PHP |Version 7.2 or higher and Composer Dependency Manager. PHP
+Multibyte String extension. Depending on your PHP configuration, you may
+need to additionally install/configure it.
+|=======================================================================
+
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+Once that's done, go to your install Ignite PHP Thin Client as a Composer 
package using the command below:
+
+include::includes/install-php-composer.adoc[]
+
+You're almost ready to run your first application.
+
+== Starting a Node
+
+Before connecting to Ignite from the PHP thin client, you must start at least 
one Ignite cluster node.
+
+include::includes/starting-node.adoc[]
+
+== Running Your First  Application
+
+Once at least one node is started, you can use the Ignite PHP thin client to 
perform cache operations.
+Your Ignite installation includes several ready-to-run PHP examples in the 
`{IGNITE_HOME}/platforms/php/examples` directory. For example,
+
+
+[tabs]
+--
+tab:Unix[]
+[source,shell]
+----
+cd {IGNITE_HOME}/platforms/php/examples
+php CachePutGetExample.php
+----
+
+tab:Windows[]
+[source,shell]
+----
+cd {IGNITE_HOME}\platforms\php\examples
+php CachePutGetExample.php
+----
+--
+
+
+Assuming that the server node is running locally, and that you have completed 
all of the pre-requisites listed above, here is a very simple _HelloWorld_ 
example that puts and gets values from the cache.
+Note the `require_once` line — make sure the path is correct.
+If you followed the instructions above, and if you place this hello world 
example in your examples folder, it should work.
+
+
+[source,php]
+----
+<?php
+
+require_once __DIR__ . '/../vendor/autoload.php';
+
+use Apache\Ignite\Client;
+use Apache\Ignite\ClientConfiguration;
+use Apache\Ignite\Type\ObjectType;
+use Apache\Ignite\Cache\CacheEntry;
+use Apache\Ignite\Exception\ClientException;
+
+function performCacheKeyValueOperations(): void
+{
+    $client = new Client();
+    try {
+        $client->connect(new ClientConfiguration('127.0.0.1:10800'));
+        $cache = $client->getOrCreateCache('myCache')->
+            setKeyType(ObjectType::INTEGER);
+
+        // put and get value
+        $cache->put(1, 'Hello World');
+        $value = $cache->get(1);
+        echo($value);
+    } catch (ClientException $e) {
+        echo($e->getMessage());
+    } finally {
+        $client->disconnect();
+    }
+}
+
+performCacheKeyValueOperations();
+----
+
+== Next Steps
+
+From here, you may want to:
+
+* Read more about using  link:thin-clients/php-thin-client[PHP Thin Client]
+//* Explore the 
link:https://github.com/gridgain/php-thin-client/tree/master/examples[additional
 examples] included with GridGain
+
diff --git a/docs/_docs/quick-start/python.adoc 
b/docs/_docs/quick-start/python.adoc
new file mode 100644
index 0000000..0a936f9
--- /dev/null
+++ b/docs/_docs/quick-start/python.adoc
@@ -0,0 +1,73 @@
+= Ignite for Python
+
+This chapter explains system requirements for running Ignite and how to 
install Ignite, start a cluster, and run a simple Hello World example using a 
thin link:thin-clients/python-thin-client[client for Python].
+
+Thin Client is a lightweight Ignite connection mode. It does not participate 
in the cluster, never holds any data, or performs computations.
+All it does is establish a socket connection to one or multiple Ignite nodes 
and perform all operations through those nodes.
+
+== Prerequisites
+
+Ignite was tested on:
+
+include::includes/prereqs.adoc[]
+
+and:
+
+[cols="1,3"]
+|=======================================================================
+|Python |Version 3.4 or above
+|=======================================================================
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+Once that's done, execute the following command to install the Python Thin 
Client package.
+This thin client is abbreviated as `pyignite`:
+
+include::includes/install-python-pip.adoc[]
+
+== Starting a Node
+
+Before connecting to Ignite via the Python thin client, you must start at 
least one Ignite cluster node.
+
+include::includes/starting-node.adoc[]
+
+== Running Your First Application
+
+Once the cluster is started, you can use the Ignite Python thin client to 
perform cache operations.
+
+Assuming that the server node is running locally, here is a _HelloWorld_ 
example that puts and gets values from the cache:
+
+[source,python]
+----
+from pyignite import Client
+
+client = Client()
+client.connect('127.0.0.1', 10800)
+
+#Create cache
+my_cache = client.create_cache('my cache')
+
+#Put value in cache
+my_cache.put(1, 'Hello World')
+
+#Get value from cache
+result = my_cache.get(1)
+print(result)
+----
+
+To run this, you can save the example as a text file (hello.py for example) 
and run it from the command line:
+
+
+[source, python]
+----
+python hello.py
+----
+
+Or you can enter the example into your Python interpreter/shell (IDLE on 
Windows, for example) and modify/execute it there.
+
+
+== Further Examples
+
+Explore more Ignite Python examples 
link:{githubUrl}/modules/platforms/python/examples[here^].
diff --git a/docs/_docs/quick-start/restapi.adoc 
b/docs/_docs/quick-start/restapi.adoc
new file mode 100644
index 0000000..5600043
--- /dev/null
+++ b/docs/_docs/quick-start/restapi.adoc
@@ -0,0 +1,83 @@
+= REST API for Ignite
+
+This chapter explains system requirements for running Ignite, including how to 
install Ignite, start a cluster, and run a simple Hello World example using 
Ignite's REST API.
+
+
+== Prerequisites
+
+Ignite was tested on:
+
+include::includes/prereqs.adoc[]
+
+
+== Installing Ignite
+
+include::includes/install-ignite.adoc[]
+
+Once that's done, you will need to enable HTTP connectivity by putting the
+`ignite-rest-http` module in the classpath of your application. To do this,
+copy the `ignite-rest-http` module from `{IGNITE_HOME}/libs/optional/` to the 
`{IGNITE_HOME}/libs` folder.
+
+== Starting a Node
+
+Before connecting to Ignite via the REST API, you must start at least one 
cluster node.
+
+include::includes/starting-node.adoc[]
+
+== Running Your First Application
+
+Once the cluster is started, you can use the Ignite REST API to perform cache 
operations.
+
+You don't need to explicitly configure anything because the connector is 
initialized automatically, listening on port 8080.
+
+To verify the connector is ready, use curl:
+
+[source,shell]
+----
+curl "http://localhost:8080/ignite?cmd=version";
+----
+
+You should see a message like this:
+
+
+[source, shell,subs="attributes,specialchars"]
+-------------------------------------------------------------------------------
+curl "http://localhost:8080/ignite?cmd=version";
+{"successStatus":0,"error":null,"sessionToken":null,"response":"{version}"}
+-------------------------------------------------------------------------------
+
+You can see in the result that Ignite version is {version}.
+
+Request parameters may be provided as either a part of URL or in a form data:
+
+[source,shell]
+----
+curl 'http://localhost:8080/ignite?cmd=put&cacheName=myCache' -X POST -H 
'Content-Type: application/x-www-form-urlencoded' -d 'key=testKey&val=testValue'
+----
+
+Assuming that the server node is running locally, here is a simple example 
that creates a cache (myCache) and then puts and gets the string "Hello_World!" 
from the cache via the REST API:
+
+Create a cache:
+
+[source,shell]
+----
+curl "http://localhost:8080/ignite?cmd=getorcreate&cacheName=myCache";
+----
+
+Put data into the cache. The default type is "string" but you can specify a 
link:restapi#data-types[data type] via the `keyType` parameter.
+[source,shell]
+----
+curl 
"http://localhost:8080/ignite?cmd=put&key=1&val="Hello_World!"&cacheName=myCache";
+----
+
+Get the data from the cache
+[source,shell]
+----
+curl "http://localhost:8080/ignite?cmd=get&key=1&cacheName=myCache";
+----
+
+Now that you've seen a very basic example of accessing Ignite clusters via the 
REST API, you should probably keep the following in mind:
+
+- This is a very basic example. You will want to read more on the REST API 
link:restapi[here,window=_blank]. That page includes a listing of the various 
API calls and also covers important subjects like Authentication.
+- The REST interface may not be suitable for all tasks. For example, you 
should use one of the language clients instead if you're trying to load bulk 
data, or perform mission critical tasks with millisecond latency.
+
diff --git a/docs/_docs/quick-start/sql.adoc b/docs/_docs/quick-start/sql.adoc
new file mode 100644
index 0000000..ff60c24
--- /dev/null
+++ b/docs/_docs/quick-start/sql.adoc
@@ -0,0 +1,114 @@
+= Getting Started Quickly with SQL Via the Command Line
+
+If you just want to start up a cluster on the local machine and add a few rows 
of data without running Java or starting up an IDE, you can do some basic data 
loading and run some queries via the command line purely in SQL in less than 5 
minutes.
+
+To do this, we'll use the `sqlline` utility (located in the `/bin` directory 
of your Ignite installation).
+
+NOTE: This example shows just one simple way to load data into Ignite, 
quickly, for the sake of experimenting.
+For larger, production-scale work, you would want to use a more robust method 
of loading data (IgniteDataStreamer, Spark, advanced SQL, etc.).
+Refer to the link:persistence/external-storage[External Storage] page for the 
information on how to load data from an RDBMS.
+
+== Installing Ignite
+
+Before we can get to any of that, we'll first need to install Ignite.
+
+include::includes/install-ignite.adoc[]
+
+
+== Running Ignite
+
+include::includes/starting-node.adoc[]
+
+This is the most basic startup method.
+It starts a node on the local machine, which gives us a place into which we 
can load data.
+
+Now just connect to the node and add data.
+
+== Using sqlline
+
+Using the `sqlline` utility is easy — you just need to connect to the node and 
then start entering SQL statements.
+
+. Open one more command shell tab and ensure you're in the `{IGNITE_HOME}\bin`
+folder.
+
+. Connect to the cluster with `sqlline`:
++
+[tabs]
+--
+tab:Unix[]
+[source,shell]
+----
+$ ./sqlline.sh -u jdbc:ignite:thin://127.0.0.1/
+----
+tab:Windows[]
+[source,shell]
+----
+$ sqlline -u jdbc:ignite:thin://127.0.0.1
+----
+--
+
+. Create two tables by running these two statements in `sqlline`:
++
+[source, sql]
+----
+CREATE TABLE City (id LONG PRIMARY KEY, name VARCHAR) WITH 
"template=replicated";
+
+CREATE TABLE Person (id LONG, name VARCHAR, city_id LONG, PRIMARY KEY (id, 
city_id)) WITH "backups=1, affinityKey=city_id";
+----
+
+
+. Insert some rows by copy-pasting the statements below:
++
+[source, sql]
+----
+INSERT INTO City (id, name) VALUES (1, 'Forest Hill');
+INSERT INTO City (id, name) VALUES (2, 'Denver');
+INSERT INTO City (id, name) VALUES (3, 'St. Petersburg');
+INSERT INTO Person (id, name, city_id) VALUES (1, 'John Doe', 3);
+INSERT INTO Person (id, name, city_id) VALUES (2, 'Jane Roe', 2);
+INSERT INTO Person (id, name, city_id) VALUES (3, 'Mary Major', 1);
+INSERT INTO Person (id, name, city_id) VALUES (4, 'Richard Miles', 2);
+----
+
+. And then run some basic queries:
++
+[source, sql]
+----
+SELECT * FROM City;
+
++--------------------------------+--------------------------------+
+|               ID               |              NAME              |
++--------------------------------+--------------------------------+
+| 1                              | Forest Hill                    |
+| 2                              | Denver                         |
+| 3                              | St. Petersburg                 |
++--------------------------------+--------------------------------+
+3 rows selected (0.05 seconds)
+----
+
+. As well as queries with distributed JOINs:
++
+[source, sql]
+----
+SELECT p.name, c.name FROM Person p, City c WHERE p.city_id = c.id;
+
++--------------------------------+--------------------------------+
+|              NAME              |              NAME              |
++--------------------------------+--------------------------------+
+| Mary Major                     | Forest Hill                    |
+| Jane Roe                       | Denver                         |
+| John Doe                       | St. Petersburg                 |
+| Richard Miles                  | Denver                         |
++--------------------------------+--------------------------------+
+4 rows selected (0.011 seconds)
+----
+
+Easy!
+
+
+== Next Steps
+
+From here, you may want to:
+
+* Read more about using Ignite and link:SQL/sql-introduction[SQL]
+* Read more about using link:sqlline[sqlline]

Reply via email to