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]
