Açıklaması şöyle. Apache Ignite Java ile geliştirilmiş
Apache® Ignite™ was originally contributed to the Apache Software Foundation by GridGain Systems. The project rapidly evolved into a top level Apache project with tens of thousands of downloads per month. The GridGain Professional Edition, Enterprise Edition, and Ultimate Edition are built on Apache Ignite.
GridGain vs Apache Ignite
Açıklaması şöyle
Indeed, Gridgain is wraper built on top of Ignite. Gridgain gives you additional features such as Security, Rolling production update etc that is required for enterprise level application.
GridGain şirketi "Data Center Replication" da sunuyor
Neleri Destekler
Apache Ignite bir sürü şeyi birden destekliyor.
SQL
Key/Value
Transactions
Compute
Services
Streaming
Machine Learning
Açıklaması şöyle
Apache Ignite is a high-performance distributed database that stores data in memory (as well as persistent).As with every NoSQL solution, it supports replication and sharding out-of-the-box but also provides ACID transactions, SQL support, and Compute Grid.
Distributed SQL
Şeklen şöyle
Persistence
Ignite native persistence
Third party persistence
Durable Memory
Şeklen şöyle. Bir anlamnda Linux'taki swap dosya sistemine benziyor.
Maven
Şu satırı dahil ederiz
<properties><ignite.version>2.10.0</ignite.version><ignite.spring.data.version>1.0.0</ignite.spring.data.version></properties><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><dependency><groupId>org.apache.ignite</groupId><artifactId>ignite-spring-data-2.2-ext</artifactId><version>${ignite.spring.data.version}</version></dependency>
Örnekler
Gridgain örnekler burada
Bazı diğer örnekler burada
Bağlantı
Bağlantı için 3 yöntem var
1. Thick Client : Cluster topolojisine dahil olur
2. Thin Client : Cluster topolojisine dahil olmaz
3. JDBC : Relational Database olarak kullanmak istersek
Java
Şöyle yaparız. Herhangi bir düğüme bağlanmak yeterli
Class.forName("org.apache.ignite.IgniteJdbcThinDriver");Connection con = DriverManager.getConnection("jdbc:ignite:thin://192.168.0.50");
In-memory data grid
Apache Ignite in-memory data grid özelliğine sahip olduğu için Hazelcast gibi Distributed Cache olarak kullanılabilir.
Embedded node
Apache Ignite embedded olarak yani aynı JVM içinde kullanılabiliyor. Eğer Spring ile birlikte kullanmak istersek açıklaması şöyle
The embedded node can be started by SpringCacheManager itself. In this case, we will need to provide a path to either the Ignite configuration XML file or IgniteConfiguration bean via configurationPath or configuration properties respectively.
Ignite Rest API
Açıklaması şöyle
Ignite provides an out-of-the-box HTTP REST client that gives us the ability to communicate with the grid over HTTP and HTTPS protocols using the REST approach. REST APIs can be used to perform different operations like reading/writing from/to cache, execute tasks, get various metrics and more.To enable HTTP connectivity, we have addedignite-rest-http as a Maven dependency in our application. Explicit configuration is not required; the connector starts up automatically and listens on port 8080. We can also change the port by specifying -DIGNITE_JETTY_PORT=8081 as VM arguments.We can check whether the rest API is working by using the below curl command.curl 'http://localhost:8081/ignite?cmd=version'Following is a sample GET REST API which we can be used to procure the data from the Cache using the CacheName and key.http://localhost:8081/ignite?cmd=get&cacheName=student&key=1
Anotasyonlar
@QuerySqlField
Alanın Ignıte tarafından görülebilmesini sağlar
@AffinityKeyMapped
Foreign key olarak bağlı iki tablonun collocated olmasını sağlar. Satır sayısı az olduğu için Collocated yapılamayan tablolar, replicate edilmeli
SQL Dili
ANSI 99 uyumlu
INSERT
UPDATE
DELETE
CREATE TABLE
DROP TABLE
CREATE INDEX
DROP INDEX
ALTER TABLE
SELECT : JOIN ve SUBQUERY
yapılabilir
ALTER TABLE
Şöyle yaparız
ALTER TABLE city ADD COLUMN IF NOT EXISTS population int; ALTER TABLE person DROP COLUMN (code,gdp);
CREATE INDEX
B+ Tree Index kullanır. Inline veri büyülüğü belirtilebilir.
CREATE TABLE
CREATE TABLE yazısına taşıdım
Örnek
Şöyle yaparız. country ve city diye iki tablo var. Burada "Collocated Join" önemli. Collocated yan yana demek. Non-collocated join'ler ciddi performans kaybına sebep olabilir.
SELECT country.name, city.name MAX(city,population) as max_popFROm country JOIN city on city.countrycode = country.code WHERE country.code IN ('USA','RUS','CHN') GROUP BY country.name, city.name ORDER BY max_op DESC LIMIT 3;
Hiç yorum yok:
Yorum Gönder