| <!-- |
| ▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████ |
| ▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀ |
| ▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███ |
| ░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄ |
| ▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒ |
| ▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░ |
| ▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░ |
| ░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ |
| ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ |
| --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| --> |
| |
| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <link rel="canonical" href="https://ignite.apache.org/features/sql.html" /> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <title>Distributed ANSI SQL - Apache Ignite</title> |
| |
| <meta name="description" |
| content="Apache Ignite comes with a ANSI-99 compliant, horizontally scalable, and fault-tolerant SQL engine that |
| allows you to interact with Ignite as with a regular SQL database."/> |
| |
| <!--#include virtual="/includes/styles.html" --> |
| |
| <!--#include virtual="/includes/sh.html" --> |
| </head> |
| <body> |
| |
| <!--#include virtual="/includes/header.html" --> |
| <article> |
| <header> |
| <div class="container"> |
| <h1>Distributed ANSI SQL <strong>With JOINs</strong></h1> |
| </div> |
| </header> |
| <div class="container"> |
| <p> |
| Apache Ignite® comes with a ANSI-99 compliant, horizontally scalable, and fault-tolerant SQL engine |
| that allows you to interact with Ignite as with a regular SQL database using JDBC, ODBC drivers, or |
| native SQL APIs available for Java, C#, C++, Python, and other programming languages. |
| </p> |
| <img class="img-responsive diagram-right" alt="SQL Database diagram" src="/images/svg-diagrams/distributed_sql.svg" alt="Distributed ANSI SQL With JOINs" /> |
| <p> |
| Ignite supports all DML commands, including SELECT, UPDATE, INSERT, and DELETE queries as well |
| as a subset of DDL commands relevant for distributed systems. |
| </p> |
| |
| <h2>SQL Joins</h2> |
| <p> |
| Ignite fully supports distributed joins for advanced querying needs. A distributed join is a SQL statement |
| with a join clause that combines two or more tables. If the tables are joined on the partitioning column |
| (affinity or primary key), the join is called a co-located join. Otherwise, if the tables were not |
| co-located initially, then Ignite does the join in a non-colocated fashion. Co-located joins avoid data |
| shuffling between nodes and minimize network usage, thus, performing much faster than a non-colocated |
| counterpart. |
| </p> |
| |
| <h2>SQL and In-Memory Mode</h2> |
| <p> |
| Apache Ignite can function in a pure in-memory mode when all the data and indexes are located solely in |
| memory. In this mode, Ignite SQL shows the highest performance since all the data is served from memory |
| with no usage of the disk tier at all. |
| </p> |
| |
| <h2>SQL and Native Persistence</h2> |
| <p> |
| In this mode, Ignite persists 100% of data and indexes in the native persistence while caching as much |
| as possible in memory. Ignite SQL engine does not require to cache an entire data set in memory to |
| operate correctly. If the engine finds that a record is not cached, then it will read the record from |
| disk. Your application only executes SQL queries, and Ignite gets the records from both memory and disk |
| automatically. |
| </p> |
| <p> |
| On cluster restarts, Ignite reads data and indexes from disk, eliminating the need for memory warm-up, |
| which significantly decreases the time of any potential downtimes. |
| |
| </p> |
| |
| <h2>SQL and 3rd Party Databases</h2> |
| <p> |
| Ignite can be used as a caching layer for external databases such as RDBMS, NoSQL, or Hadoop. In this mode, |
| the Ignite SQL engine requires caching all the data needed for SQL queries in memory since the engine |
| currently does not support federated queries. |
| </p> |
| |
| <p> |
| If federated queries between Ignite and an external database are required, then you can consider Ignite |
| integration for Spark, where the DataFrames API can join the data stored in Ignite and other systems. |
| </p> |
| |
| <div class="jumbotron jumbotron-fluid"> |
| <div class="container"> |
| <div class="display-6 title">Learn More</div> |
| <hr class="my-4"> |
| <div class="row"> |
| <div class="col-sm-6"> |
| <ul> |
| <li> |
| <p><a href="https://apacheignite-sql.readme.io/docs/how-ignite-sql-works" target="docs">Ignite SQL implementation details <i class="fa fa-angle-double-right"></i></a></p> |
| </li> |
| <li> |
| <p><a href="https://apacheignite-sql.readme.io/docs/distributed-joins" target="docs">Distributed JOINs <i class="fa fa-angle-double-right"></i></a></p> |
| </li> |
| <li> |
| <p><a href="https://apacheignite-sql.readme.io/docs/sql-reference-overview" target="docs">SQL Reference <i class="fa fa-angle-double-right"></i></a></p> |
| </li> |
| </ul> |
| </div> |
| <div class="col-sm-6"> |
| <ul> |
| <li> |
| <p><a href="/use-cases/spark-acceleration.html">Apache Ignite and Spark <i class="fa fa-angle-double-right"></i></a></p> |
| </li> |
| <li> |
| <p><a href="/arch/multi-tier-storage.html">Multi-Tier Storage <i class="fa fa-angle-double-right"></i></a></p> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| </article> |
| |
| |
| <!--#include virtual="/includes/footer.html" --> |
| |
| <!--#include virtual="/includes/scripts.html" --> |
| </body> |
| </html> |