blob: 0d4bbf66fc0f319826aae0ea8df1430be97f2da0 [file] [log] [blame]
extend ../_components/base.pug
block pagetitle
| Distributed ANSI SQL
block css
link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version)
link(rel="stylesheet", href="../css/compute-apis.css?ver=" + config.version)
link(rel="stylesheet", href="../css/sql.css?ver=" + config.version)
block main
- global.pageHref = "features"
- config.hdrClassName = "hdr__blue"
include ../_components/header.pug
section.innerhero
.container.innerhero__cont
.innerhero__main
.innerhero__pre.pb-3 Apache Ignite
h1.h1.innerhero__h1 Distributed ANSI SQL
.innerhero__descr.pt-2.h5.
The same SQL you've been using for years but now with<br> in-memory speed and at unlimited scale
.innerhero__action
a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
img.innerhero__pic.innerhero__pic--sql(src="/public/img/features/sql/hero-image.svg", alt="sql-hero")
// /.innerhero
section.dist
.container
.dist__block.flexi
.dist__info
h2.dist__h2.h4 Apache Ignite as a SQL Database
p.dist__text The native support for SQL let’s you work with Ignite as with a standard SQL database. Literally, you can use just SQL if your applications need nothing else:
.dist__items.flexi
.dist__item
h3.dist__item-title DDL commands
.dist__item-grey.dist__item-grey1.flexi
.dist__itemitem.flexi
span.dist__item-span CREATE
span.dist__item-span ALTER
span.dist__item-span DROP
.dist__item
h3.dist__item-title DML commands
.dist__item-grey.dist__item-grey2.flexi
.dist__itemitem.flexi
span.dist__item-span SELECT
span.dist__item-span INSERT
span.dist__item-span UPDATE
.dist__itemitem.dist__itemitem__end.flexi
span.dist__item-span MERGE
span.dist__item-span DELETE
h3.dist__h3 Apache Ignite is shipped with:
.dist__parts.flexi
.dist__part.flexi
.compute2-points__item.fz20
.dist__part-text JDBC driver
.dist__part.flexi
.compute2-points__item.fz20
.dist__part-text ODBC driver
.dist__part.flexi
.compute2-points__item.fz20
.dist__part-text.dist__part-textend.flexi Built-in SQL APIs
.dist__part-grey Available for Java, C#, C++, Python, and other programming languages
img.dist__image(src="/public/img/features/sql/image.svg", alt="sql-hero")
// /.dist
section.dist1
.container
h2.dist1__h2.h4 Join, Group and Aggregate Distributed Data Sets
.dist1__subtext Whether you use a two or thousand-node cluster, you always can do the following:
.dist1__parts.flexi
.dist1__part group data
.dist1__part join data
.dist1__part order data
.dist1__part.dist1__partend aggregate data
.dist1__title What is a distributed join?
p.dist1__text.h4 A distributed join is a SQL statement with a join clause that combines two or more tables that have their data distributed across many cluster nodes.
h3.dist1__h3.h4 Types of joins in Ignite
.dist1__blocks.flexi
.dist1__block
h4.dist1__h4 Co-located joins
p.dist1__texts this is the most performant type of joins that avoid data shuffling between nodes and minimize network usage.
p.dist1__texts.pt-1 This type of join is used if you join <a class="dist1__link" href="https://ignite.apache.org/docs/latest/data-modeling/affinity-collocation" target="_blank">partitioned and replicated tables</a> or partitioned tables that are co-located with each other.
.dist1__block
h4.dist1__h4 Non-colocated joins:
p.dist1__texts less performant type of joins that join data of non-colocated tables. Ignite needs to shuffle data over the network to produce a correct result set.
.dist1__block
h4.dist1__h4 Hash joins:
p.dist1__texts Ignite supports classic hash join algorithm that is more efficient than nested loop joins for many scenarios.
// /.dist1
section.dist2
.container
h2.dist2__h2.h4 Ignite SQL Engine and Multi-Tier Storage
p.dist2__p Depending on your storage configuration, Ignite SQL engine can query both in-memory and disk-only records
.dist2__blocks.flexi
.dist2__block
h3.dist2__h3 In-Memory Mode
p.dist2__text.dist2__text1 Ignite caches data only in memory
details.dist2__details
summary.dist2__active
img(src="/public/img/features/sql/plus.svg", alt="sql-hero")
.dist2__subtext
p In this mode, Ignite SQL performs the fastest way possible as long as all the data is served from memory with no usage of the disk tier at all.
.dist2__block
h3.dist2__h3 In-Memory <br>+ Native Persistence Mode
p.dist2__text Ignite scales beyond available<br> memory capacity
details.dist2__details
summary.dist2__active
img(src="/public/img/features/sql/plus.svg", alt="sql-hero")
.dist2__subtext
p Ignite persists 100% of data and indexes in the <a href="/arch/native-persistence.html">native persistence</a> while caching as much as possible in memory.
p.pt-1 Ignite SQL engine does not require to cache an entire data set in memory to operate correctly.
p.pt-1 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.pt-1 On cluster restarts, Ignite reads data and indexes from disk, eliminating the need for memory warm-up, which significantly decreases downtime.
.dist2__block
h3.dist2__h3 In-Memory<br>+ External Database Mode
p.dist2__text Ignite accelerates your<br> existing databases
details.dist2__details
summary.dist2__active
img(src="/public/img/features/sql/plus.svg", alt="sql-hero")
.dist2__subtext
p In this mode, the Ignite SQL engine requires caching all the data needed for distributed queries in memory since the engine currently does not support federated queries.
p.pt-1 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.
// /.dist2
section.native-bottom.container
.native-bottom__grid
article.nativebotblock
h3.h4.nativebotblock__title
img(src="/public/img/features/native-rocket.svg", alt="").nativebotblock__icon
span Ready to Start?
p.nativebotblock__text Discover more details about Apache Ignite SQL engine<br> and apply it for your use-case
a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/persistence/native-persistence", target="_blank") Memory Architecture
article.nativebotblock.nativebotblock--learn
h3.h4.nativebotblock__title
img(src="/public/img/features/native-docs.svg", alt="").nativebotblock__icon
span Want to Learn More?
p.nativebotblock__text Ignite SQL will become even more powerful and advanced with the release of the Apache Calcite based engine
.dist__link Coming in Ignite 3.0
a.nativebotblock__link.arrowlink(href="https://cwiki.apache.org/confluence/display/IGNITE/Apache+Calcite-powered+SQL+Engine+Roadmap", target="_blank") New Calcite powered SQL engine