Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

IDIEP-36
Author

Denis Magda

Sponsor

Denis Magda

Created

 

Status

Status

colourGrey
title

DRAFT

IN PROGRESS


Table of Contents

Motivation

...

  • Spark Integration (to be discussed)
  • SpringData and SpringBoot
  • Kafka Integration
  • TensorFlow Integration
  • Cassandra Integration

...

Thin clients should be stored in separate repositories and packaged in different forms - binaries, Maven/Nuget/Npmjs (depending on a language type). The clients can be released independently off of the core.

Independent Integrations

...

Below is a list of existing integrations that won't be turned into Ignite modules but rather would be moved to separate Github repositories and won't be maintained by Ignite community for every core release. If later the community sees demand for an unsupported integration, it can be taken back and be officially supported (testing, dev, releases, compatibility with the core) as an Ignite module.

The list of integrations that to be moved to independent Github repositories and will not be supported by the community for every Ignite release:

We discussed in dev list[1] and agreed on creating a new repository for hosting our Ignite integrations. 

`[1]` http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html

As discussed [2] with respect to releases all the extensions need to be verified for an upcoming release and updated if needed (with the version increase only for those updated)

`[2]` http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-dependencies-and-release-process-for-Ignite-Extensions-td44478.html

The list of integrations that to be moved to independent Github repositories and will not be supported by the community for every Ignite release:

Integration Name+1 (explain if needed)-1 (with explanation)
Kafka
Twitter




ZeroMQ
Integration Name+1 (explain if needed)-1 (with explanation)
Twitter
ZeroMQ

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov 

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project)

RocketMQ

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project)

Storm

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov 

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Saikat Maitra

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project)

FlumeRocketMQ

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Saikat Maitra

Alexey Zinoviev - all ETL streaming tools/modules should be kept in one place (as part of AI or as ETL Streaming AI separate project) I mean that Flume is tool for loading big datasets to AI

StormFlink

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Saikat Maitra

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project)

MQTTFlume

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey KozlovAlexey Zinoviev

Pavel Kovalenko

Camel

Alexey Zinoviev - all ETL tools/modules should be kept in one place (as part of AI or as ETL AI separate project) I mean that Flume is tool for loading big datasets to AI

Flink

Denis Magda - low usage, better to have as an independent Github project that Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey GoncharukAlexey Zinoviev

Sergey Kozlov

Pavel Kovalenko

Saikat Maitra

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project)

MQTT

Denis Magda - low usage, better

Hibernate

Denis Magda - Spring Data gets much bigger adoption for Ignite deployments. Don't see a lot of traction with Hibernate. It's hard to maintain it in various variations - Ignite goes with several modules of different versions. Better to have as an independent Github project with forks for specific Hibernate versionsthat can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

Alexey Zinoviev - I suppose it's useful feature for wide adoption among Java Devs who use AI not like cache, but like database


CamelJMS

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk

Sergey KozlovAlexey Zinoviev

Pavel Kovalenko

Alexey Zinoviev - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project). Also, I didn't see the Kafka Integration in this list

AOP-Based Grid
Hibernate

Denis Magda - Spring Data gets much bigger adoption for Ignite deployments. Don't see a lot of traction with Hibernate. It's hard to maintain it in various variations - Ignite goes with several modules of different versions. Better Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybodywith forks for specific Hibernate versions.

Alexey Kuznetsov

Alexey Goncharuk Maybe drop it at all because moving this into a separate project may be a pain - a lot of internal API usages

Sergey Kozlov

Pavel Kovalenko

Alexey Zinoviev 

Pavel Kovalenko

- I suppose it's useful feature for wide adoption among Java Devs who use AI not like cache, but like database

JMSJSR-107(JCache)

Denis Magda - don't see any value in supporting this JSR rather than claiming that specification. It's better to have much cleaner Ignite key-value API without any dependencies influenced by the specification.low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Saikat Maitra

Alexey Zinoviev we should ask about that question the user-community, I have heard many times that that the JCache implementation  is important for Java Devs

Ivan Pavlukhin It is quite natural for me to imagine integration with Ignite using some kind of standard API. The situation with JCache is similar to JDBC. AFAIR Spring has a JCache integration. If we are going to evolve caching trait then we should support easy integartion with Spring. If there alternatives to JCache then we should consider them.

OSGi

Denis Magda - this integration is already broken and badly maintained. Haven't come across anybody who uses OSGi in the projects Ignite is targeted for.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

YARN

Denis Magda - not sure it's useful any longer and should be supported by the community.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev What was the purpose of this integration?

Pavel Kovalenko

Mesos

Denis Magda - not sure it's useful any longer and should be supported by the community.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev What was the purpose of this integration?

Pavel Kovalenko

.NET: Legacy Entity Framework and ASP.NET integrations

Denis Magda - outdated, needs to be replaced with a new one version.

Alexey Kuznetsov

Pavel Tupitsyn integrations with legacy technologies; also blocks .NET Core migration 

Sergey Kozlov

Alexey Zinoviev

Scalar

Alexey Goncharuk Not used, brings unnecessary dependency on scala, adds library conflicts

Sergey Kozlov

Alexey Zinoviev

The list of the integrations to be removed completely (don't even move them to an independent Github repo):

 - all streaming tools/modules should be kept in one place (as part of AI or as Streaming AI separate project). Also, I didn't see the Kafka Integration in this list

AOP-Based Grid

Denis Magda - low usage, better to have as an independent Github project that can be maintained by anybody.

Alexey Kuznetsov

Alexey Goncharuk Maybe drop it at all because moving this into a separate project may be a pain - a lot of internal API usages

Sergey Kozlov

Alexey Zinoviev 

Pavel Kovalenko


JSR-107(JCache)

Denis Magda - don't see any value in supporting this JSR rather than claiming that specification. It's better to have much cleaner Ignite key-value API without any dependencies influenced by the specification.

Alexey Goncharuk

Sergey Kozlov

Pavel Kovalenko

Anton Vinogradov

Alexey Zinoviev we should ask about that question the user-community, I have heard many times that that the JCache implementation  is important for Java Devs

Ivan Pavlukhin It is quite natural for me to imagine integration with Ignite using some kind of standard API. The situation with JCache is similar to JDBC. AFAIR Spring has a JCache integration. If we are going to evolve caching trait then we should support easy integartion with Spring. If there alternatives to JCache then we should consider them.

OSGi

Denis Magda - this integration is already broken and badly maintained. Haven't come across anybody who uses OSGi in the projects Ignite is targeted for.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko


YARN

Denis Magda - not sure it's useful any longer and should be supported by the community.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev What was the purpose of this integration?

Pavel Kovalenko


Mesos

Denis Magda - not sure it's useful any longer and should be supported by the community.

Alexey Kuznetsov

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev What was the purpose of this integration?

Pavel Kovalenko


.NET: Legacy Entity Framework and ASP.NET integrations

Denis Magda - outdated, needs to be replaced with a new one version.

Alexey Kuznetsov

Pavel Tupitsyn integrations with legacy technologies; also blocks .NET Core migration 

Sergey Kozlov

Alexey Zinoviev


Scalar

Alexey Goncharuk Not used, brings unnecessary dependency on scala, adds library conflicts

Sergey Kozlov

Alexey Zinoviev



The list of the integrations to be removed completely (don't even move them to an independent Github repo):

Integration+1 (explain if needed)-1 (with explanation)

Redis and Memcached protocols support

Denis Magda - not sure why these 2 were supported in the first place.

Sergey Kozlov - thin clients provide full and rich replacement

Alexey Zinoviev


 ignite-clients module

Denis Magda - we already have Thin Clients, duplicate features with fewer capabilities

Sergey Kozlov

Alexey Zinoviev


Hadoop Accelerator and IGFS

Denis Magda - community has already voted for the removal.

Sergey Kozlov

The community has already voted for the removal.

Alexey Zinoviev IGFS should be moved to the separate package in the first

AOP-Based Grid

Alexey Goncharuk Unused, hard to move to a separate module due to many internal API usages

Sergey Kozlov

Alexey Zinoviev


Ignite Schedule

Alexey Goncharuk same issues as with local caches

Sergey Kozlov - it can be implemeted in user code

Alexey Zinoviev

Pavel Kovalenko Ignite integration with distributed schedulers like Airflow or Oozie can be a better decision.


APIs for Removal

As part of the modularization, that needs to be considered for Ignite 3.0, it's worthwhile listing all the APIs that the community is planning to remove in Ignite 3.0. The APIs can belong to both Ignite core and modules that will stay in Ignite and will be officially supported by the community:


API
Integration
+1 (explain if needed)-1 (with explanation)

Redis and Memcached protocols support

Denis Magda - not sure why these 2 were supported in the first place.

Sergey Kozlov - thin clients provide full and rich replacement

Alexey Zinoviev

Already deprecated APIs
 ignite-clients moduleDenis Magda - we already have Thin Clients, duplicate features with fewer capabilities
Hadoop Accelerator and IGFS

Local caches
 - community has already voted for the removal.

Sergey Kozlov

The community has already voted for the removal.

Alexey Zinoviev IGFS should be moved to the separate package in the first

AOP-Based Grid

Alexey Kuznetsov Can we "emulate" local cache by partitioned with "node filter to one node"?

Alexey Goncharuk Local cache is meaningless in a distributed system, especially when a transaction is involved: suppose a prepare step completed and a node with local cache goes down. According to 2PC, we cannot proceed until the node goes up again

Anton Vinogradov

Alexey Goncharuk Unused, hard to move to a separate module due to many internal API usages

Spatial indexes
Ignite Schedule

Denis Magda - the API is broken and not suited for production. Can be designed from scratch with Ignite 3.1 and 3.2.

Alexey Goncharuk

 same issues as with local caches
 - it can be implemeted in user code

Pavel Kovalenko Ignite integration with distributed schedulers like Airflow or Oozie can be a better decision.

APIs for Removal

As part of the modularization, that needs to be considered for Ignite 3.0, it's worthwhile listing all the APIs that the community is planning to remove in Ignite 3.0. The APIs can belong to both Ignite core and modules that will stay in Ignite and will be officially supported by the community:

 It could be removed only in the 3.1 then the new implementation will be provided in other case we will poor with indices

Full-text search

Denis Magda - the API is broken and not suited for production. Can be designed from scratch with Ignite 3.1 and 3.2.

Alexey Goncharuk

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided in other case we will poor with full-text indices

Checkpointing SPI

Denis Magda - Ignite caches/tables can be used to store the checkpoints. This API is redundant.

Alexey Goncharuk

API+1 (explain if needed)-1 (with explanation)
Already deprecated APIsLocal caches

Denis Magda

Alexey Kuznetsov Can we "emulate" local cache by partitioned with "node filter to one node"?

Alexey Goncharuk Local cache is meaningless in a distributed system, especially when a transaction is involved: suppose a prepare step completed and a node with local cache goes down. According to 2PC, we cannot proceed until the node goes up again

Anton Vinogradov

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko


Ignite.lock

Alexey Goncharuk The distributed lock concept is broken (see corresponding Aphyr video). The usual lock usage pattern is lock - update cache - unlock. The same semantics can be achieved using pessimistic transactions with keys locking, but instead, for an end-user, it is clear how lock can fail in a distributed system (transaction rollback).

Anton Vinogradov

Sergey Kozlov

Pavel Kovalenko Very fragile API. Not tested well. Some failures can lead to unavailability of controlling such locks. Can be returned back and reworked after implementation of some consensus algorithm like Raft.

Denis Magda - unless an alternate solution is provided as part of existing Transactional APIs. There has to be a clear migration guide for Ignite.lock customers.

Spatial indexes

Denis Magda - the API is broken and not suited for production. Can be designed from scratch with Ignite 3.1 and 3.2.

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided in other case we will poor with indices

Full-text search

Denis Magda - the API is broken and not suited for production. Can be designed from scratch with Ignite 3.1 and 3.2.

Alexey Goncharuk

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided in other case we will poor with full-text indices

Checkpointing SPI

Denis Magda - Ignite caches/tables can be used to store the checkpoints. This API is redundant.

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev 

Pavel Kovalenko

provided 

Cache.lock

Alexey Goncharuk Same arguments as with Ignite.lock, but even more redundant API

Anton Vinogradov

Sergey Kozlov

Pavel Kovalenko

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided 

Ignite Data Structures

Pavel Kovalenko Can be marked as not safe and reworked after implementation of some consensus algorithm like Raft.

Ivan Pavlukhin The implementation quality is really not sufficient. As for me data structures in current flavor should not be used in production. We can deprecate current implementation as a first step. Later on we can add all necessarry implementations as they are ready and a required development effort seems not trivial.

Denis Magda - that's basic functionality of every IMDG and in-memory cache. We can't remove it. Instead, let's plan through activities that improve or reconsider current implementations.

Pavel Tupitsyn

Sergey Kozlov

Alexey Zinoviev Agree with Denis Magdaalso we should extend the list of basic structures (ready to help)

GAR files

"Force server mode" for client nodes


Daemon nodes

Denis Magda - Visorcmd has to be preserved and updated to another protocol

Alexey Kuznetsov - Visorcmd should be merged with controls.sh

Alexey Goncharuk

Anton Vinogradov

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko


CacheRebalanceMode.NONE and Rebalance Delay

Denis Magda - it can break data consistency in a cluster. Also, remove force rebalance mode as it can be used only if rebalance delay is set.

Alexey Goncharuk The mode does not make sense, cannot be explained to an end-used

Anton Vinogradov

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko


Indexing SPI

Denis Magda - it's highly unlikely that anybody used this. The community supports all the querying engines on its own.

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

Ivan Pavlukhin


QueryEntities and Annotations based configuration of SQL

Denis Magda - Alexey Goncharuk is going to propose an alternate API that unites these concepts.

Sergey Kozlov - require full redesign, it should be fully compatible JDBC SQL and visa-versa

Alexey Zinoviev

Pavel Kovalenko

Ivan Pavlukhin


@CentralizedAffinityFunction

Alexey Goncharuk This API is no longer needed after exchange merge was introduced

Ignite.lock

Alexey Goncharuk The distributed lock concept is broken (see corresponding Aphyr video). The usual lock usage pattern is lock - update cache - unlock. The same semantics can be achieved using pessimistic transactions with keys locking, but instead, for an end-user, it is clear how lock can fail in a distributed system (transaction rollback).

Anton Vinogradov

Sergey Kozlov

Pavel Kovalenko Very fragile API. Not tested well. Some failures can lead to unavailability of controlling such locks. Can be returned back and reworked after implementation of some consensus algorithm like Raft.

Denis Magda - unless an alternate solution is provided as part of existing Transactional APIs. There has to be a clear migration guide for Ignite.lock customers.

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided 

Cache.lock

Alexey Goncharuk Same arguments as with Ignite.lock, but even more redundant API

Anton Vinogradov

Sergey Kozlov

Pavel Kovalenko

Alexey Zinoviev It could be removed only in the 3.1 then the new implementation will be provided 

Ignite Data Structures

Pavel Kovalenko Can be marked as not safe and reworked after implementation of some consensus algorithm like Raft.

Ivan Pavlukhin The implementation quality is really not sufficient. As for me data structures in current flavor should not be used in production. We can deprecate current implementation as a first step. Later on we can add all necessarry implementations as they are ready and a required development effort seems not trivial.

Denis Magda - that's basic functionality of every IMDG and in-memory cache. We can't remove it. Instead, let's plan through activities that improve or reconsider current implementations.

Pavel Tupitsyn

Sergey Kozlov

Alexey Zinoviev Agree with Denis Magdaalso we should extend the list of basic structures (ready to help)

GAR files

"Force server mode" for client nodes

Daemon nodes

Denis Magda - Visorcmd has to be preserved and updated to another protocol

Alexey Kuznetsov - Visorcmd should be merged with controls.sh

Alexey Goncharuk

Anton Vinogradov

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

CacheRebalanceMode.NONE and Rebalance Delay

Denis Magda - it can break data consistency in a cluster. Also, remove force rebalance mode as it can be used only if rebalance delay is set.

Alexey Goncharuk The mode does not make sense, cannot be explained to an end-used

Anton Vinogradov

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

Indexing SPI

Denis Magda - it's highly unlikely that anybody used this. The community supports all the querying engines on its own.

Alexey Goncharuk

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

QueryEntities and Annotations based configuration of SQL

Denis Magda - Alexey Goncharuk is going to propose an alternate API that unites these concepts.

Sergey Kozlov - require full redesign, it should be fully compatible JDBC SQL and visa-versa

Alexey Zinoviev

Pavel Kovalenko

Ivan Pavlukhin

@CentralizedAffinityFunction

Alexey Goncharuk This API is no longer needed after exchange merge was introduced

Sergey Kozlov

Alexey Zinoviev

Pavel Kovalenko

IgniteCache localPeek/localEntries

Ivan Pavlukhin These methods look more like a debug stuff and have confusing semantics. At least should be moved outside of IgniteCache facade.

Risks and Assumptions

  • Challenges with a modification of existing build and testing procedures
  • Release policies have to be updated to ensure that modules & core versions compatibility matrix is updated regularly. 

Discussion Links

http://apache-ignite-developers.2346864.n4.nabble.com/Ignite-Modularization-td42486.html

Reference Links

This initiative is also related to the discussion of Apache Ignite APIs update/removal - Apache Ignite 3.0 Wishlist

Tickets


IgniteCache.localPeek, localEntries, localClear, localSize

Ivan Pavlukhin These methods look more like a debug stuff and have confusing semantics. At least should be moved outside of IgniteCache facade.

Anton Vinogradov Such API useful for tests and bug analysis


Risks and Assumptions

  • Challenges with a modification of existing build and testing procedures
  • Release policies have to be updated to ensure that modules & core versions compatibility matrix is updated regularly. 

Discussion Links

http://apache-ignite-developers.2346864.n4.nabble.com/Ignite-Modularization-td42486.html

http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-Proposal-for-Ignite-Extensions-as-a-separate-Bahir-module-or-Incubator-project-td44064.html

http://apache-ignite-developers.2346864.n4.nabble.com/DISCUSS-dependencies-and-release-process-for-Ignite-Extensions-td44478.html


Reference Links

This initiative is also related to the discussion of Apache Ignite APIs update/removal - Apache Ignite 3.0 Wishlist

Tickets


Jira
serverASF JIRA
columnIdsissuekey,summary,issuetype,updated,assignee,customfield_12311032,customfield_12311037,customfield_12311022,customfield_12311027,priority,status,resolution
columnskey,summary,type,updated,assignee,Priority,Priority,Priority,Priority,priority,status,resolution
maximumIssues20
jqlQueryproject = Ignite AND labels IN (iep-36) order by key
serverId5aa69414-a9e9-3523-82ec-879b028fb15b
// Links or report with relevant JIRA tickets.