[jira] [Commented] (IGNITE-20475) .NET: Thin 3.0: EF Core provider (investigate)
[ https://issues.apache.org/jira/browse/IGNITE-20475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17841849#comment-17841849 ] Pavel Tupitsyn commented on IGNITE-20475: - Investigation complete, working PoC created: https://github.com/apache/ignite-3/pull/3675 *Conclusion* Implementing an EF Core provider is feasible and we should do that. *Proposed Work Plan* See IGNITE-22132: 1. Implement ADO.NET classes (connection, command, etc): IGNITE-22131 2. Polish the PoC implementation to create a basic provider: IGNITE-22133 3. Add specification tests, create tickets for missing/failing things: IGNITE-22134 4. Add NuGet package once we have most of the tests working > .NET: Thin 3.0: EF Core provider (investigate) > -- > > Key: IGNITE-20475 > URL: https://issues.apache.org/jira/browse/IGNITE-20475 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Affects Versions: 3.0.0-beta1 >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, ignite-3 > Fix For: 3.0.0-beta2 > > Time Spent: 10m > Remaining Estimate: 0h > > EF Core provider will allow using Ignite as any other DB supported by EF. > This makes adoption incredibly easy for the users - a matter of a few changed > lines to switch from Postgres/MsSQL/MySQL, keeping all existing code. > This is also a big undertaking and needs more investigation/PoC. > * https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider > * > https://blog.oneunicorn.com/2016/11/11/so-you-want-to-write-an-ef-core-provider/ -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Comment Edited] (IGNITE-20475) .NET: Thin 3.0: EF Core provider (investigate)
[ https://issues.apache.org/jira/browse/IGNITE-20475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17841849#comment-17841849 ] Pavel Tupitsyn edited comment on IGNITE-20475 at 4/29/24 5:44 AM: -- Investigation complete, working PoC created: https://github.com/apache/ignite-3/pull/3675 *Conclusion* Implementing an EF Core provider is feasible and we should do that. *Proposed Work Plan* See IGNITE-22132: 1. Implement ADO.NET classes (connection, command, etc): IGNITE-22131 2. Polish the PoC implementation to create a basic provider: IGNITE-22133 3. Add specification tests, create tickets for missing/failing things: IGNITE-22134 4. Add NuGet package once we have most of the tests working was (Author: ptupitsyn): Investigation complete, working PoC created: https://github.com/apache/ignite-3/pull/3675 *Conclusion* Implementing an EF Core provider is feasible and we should do that. *Proposed Work Plan* See IGNITE-22132: 1. Implement ADO.NET classes (connection, command, etc): IGNITE-22131 2. Polish the PoC implementation to create a basic provider: IGNITE-22133 3. Add specification tests, create tickets for missing/failing things: IGNITE-22134 4. Add NuGet package once we have most of the tests working > .NET: Thin 3.0: EF Core provider (investigate) > -- > > Key: IGNITE-20475 > URL: https://issues.apache.org/jira/browse/IGNITE-20475 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Affects Versions: 3.0.0-beta1 >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, ignite-3 > Fix For: 3.0.0-beta2 > > Time Spent: 10m > Remaining Estimate: 0h > > EF Core provider will allow using Ignite as any other DB supported by EF. > This makes adoption incredibly easy for the users - a matter of a few changed > lines to switch from Postgres/MsSQL/MySQL, keeping all existing code. > This is also a big undertaking and needs more investigation/PoC. > * https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider > * > https://blog.oneunicorn.com/2016/11/11/so-you-want-to-write-an-ef-core-provider/ -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22134) .NET: Thin 3.0: Specification tests for EF Core provider
[ https://issues.apache.org/jira/browse/IGNITE-22134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22134: Ignite Flags: (was: Docs Required,Release Notes Required) > .NET: Thin 3.0: Specification tests for EF Core provider > > > Key: IGNITE-22134 > URL: https://issues.apache.org/jira/browse/IGNITE-22134 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > Add EF Core specification tests > https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider#the-ef-core-specification-tests > Many of them will fail - disable and create tickets within IGNITE-22132 epic. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22134) .NET: Thin 3.0: Specification tests for EF Core provider
[ https://issues.apache.org/jira/browse/IGNITE-22134?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22134: Description: Add EF Core specification tests https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider#the-ef-core-specification-tests Many of them will fail - disable and create tickets within IGNITE-22132 epic. was:Implement bare bones EF Core provider using the working POC from IGNITE-20475 and ADO.NET classes from IGNITE-22131. > .NET: Thin 3.0: Specification tests for EF Core provider > > > Key: IGNITE-22134 > URL: https://issues.apache.org/jira/browse/IGNITE-22134 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > Add EF Core specification tests > https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider#the-ef-core-specification-tests > Many of them will fail - disable and create tickets within IGNITE-22132 epic. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22134) .NET: Thin 3.0: Specification tests for EF Core provider
Pavel Tupitsyn created IGNITE-22134: --- Summary: .NET: Thin 3.0: Specification tests for EF Core provider Key: IGNITE-22134 URL: https://issues.apache.org/jira/browse/IGNITE-22134 Project: Ignite Issue Type: New Feature Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Implement bare bones EF Core provider using the working POC from IGNITE-20475 and ADO.NET classes from IGNITE-22131. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22133) .NET: Thin 3.0: Basic EF Core provider
[ https://issues.apache.org/jira/browse/IGNITE-22133?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22133: Description: Implement bare bones EF Core provider using the working POC from IGNITE-20475 and ADO.NET classes from IGNITE-22131. (was: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * DbConnection * DbCommand * DbParameter * DbParameterCollection * DbTransaction https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview) > .NET: Thin 3.0: Basic EF Core provider > -- > > Key: IGNITE-22133 > URL: https://issues.apache.org/jira/browse/IGNITE-22133 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > Implement bare bones EF Core provider using the working POC from IGNITE-20475 > and ADO.NET classes from IGNITE-22131. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22133) .NET: Thin 3.0: Basic EF Core provider
Pavel Tupitsyn created IGNITE-22133: --- Summary: .NET: Thin 3.0: Basic EF Core provider Key: IGNITE-22133 URL: https://issues.apache.org/jira/browse/IGNITE-22133 Project: Ignite Issue Type: New Feature Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * DbConnection * DbCommand * DbParameter * DbParameterCollection * DbTransaction https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-20475) .NET: Thin 3.0: EF Core provider (investigate)
[ https://issues.apache.org/jira/browse/IGNITE-20475?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-20475: Epic Link: IGNITE-22132 > .NET: Thin 3.0: EF Core provider (investigate) > -- > > Key: IGNITE-20475 > URL: https://issues.apache.org/jira/browse/IGNITE-20475 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Affects Versions: 3.0.0-beta1 >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: .NET, ignite-3 > Fix For: 3.0.0-beta2 > > Time Spent: 10m > Remaining Estimate: 0h > > EF Core provider will allow using Ignite as any other DB supported by EF. > This makes adoption incredibly easy for the users - a matter of a few changed > lines to switch from Postgres/MsSQL/MySQL, keeping all existing code. > This is also a big undertaking and needs more investigation/PoC. > * https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider > * > https://blog.oneunicorn.com/2016/11/11/so-you-want-to-write-an-ef-core-provider/ -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22131) .NET: Thin 3.0: Implement essential ADO.NET classes
[ https://issues.apache.org/jira/browse/IGNITE-22131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22131: Epic Link: IGNITE-22132 > .NET: Thin 3.0: Implement essential ADO.NET classes > --- > > Key: IGNITE-22131 > URL: https://issues.apache.org/jira/browse/IGNITE-22131 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > We already have *IgniteDbDataReader* (IGNITE-18478), let's add other > essential classes to enable integrations with higher-level frameworks (e.g. > EF Core - IGNITE-20475): > * DbConnection > * DbCommand > * DbParameter > * DbParameterCollection > * DbTransaction > https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22132) .NET: Thin 3.0: EF Core provider
[ https://issues.apache.org/jira/browse/IGNITE-22132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22132: Description: EF Core provider will allow using Ignite as any other DB supported by EF. This makes adoption incredibly easy for the users - a matter of a few changed lines to switch from Postgres/MsSQL/MySQL, keeping all existing code. h2. But we already have a LINQ provider, what is the difference? Think micro-ORM vs full-blown one. *Ignite LINQ provider:* * Comes in the box, very lightweight * Can do LINQ without any setup, literally one line * Limited DML * No DDL *EF Core:* * Separate package * Full-blown ORM, extremely powerful * Familiar to any .NET developer, same API for many databases h2. More Info * EF Core is the most popular ORM for .NET. Provides an abstract way of working with a database without writing any SQL by hand. Includes DDL, DML, migrations. * Providers exist for many databases: https://learn.microsoft.com/en-us/ef/core/providers/ * Writing a provider: https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider * Reference implementation: https://github.com/dotnet/efcore/tree/main/src/EFCore.Sqlite.Core > .NET: Thin 3.0: EF Core provider > > > Key: IGNITE-22132 > URL: https://issues.apache.org/jira/browse/IGNITE-22132 > Project: Ignite > Issue Type: Epic > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > > EF Core provider will allow using Ignite as any other DB supported by EF. > This makes adoption incredibly easy for the users - a matter of a few changed > lines to switch from Postgres/MsSQL/MySQL, keeping all existing code. > h2. But we already have a LINQ provider, what is the difference? > Think micro-ORM vs full-blown one. > *Ignite LINQ provider:* > * Comes in the box, very lightweight > * Can do LINQ without any setup, literally one line > * Limited DML > * No DDL > *EF Core:* > * Separate package > * Full-blown ORM, extremely powerful > * Familiar to any .NET developer, same API for many databases > h2. More Info > * EF Core is the most popular ORM for .NET. Provides an abstract way of > working with a database without writing any SQL by hand. Includes DDL, DML, > migrations. > * Providers exist for many databases: > https://learn.microsoft.com/en-us/ef/core/providers/ > * Writing a provider: > https://learn.microsoft.com/en-us/ef/core/providers/writing-a-provider > * Reference implementation: > https://github.com/dotnet/efcore/tree/main/src/EFCore.Sqlite.Core -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22132) .NET: Thin 3.0: EF Core provider
Pavel Tupitsyn created IGNITE-22132: --- Summary: .NET: Thin 3.0: EF Core provider Key: IGNITE-22132 URL: https://issues.apache.org/jira/browse/IGNITE-22132 Project: Ignite Issue Type: Epic Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22131) .NET: Thin 3.0: Implement essential ADO.NET classes
[ https://issues.apache.org/jira/browse/IGNITE-22131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22131: Description: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * DbConnection * DbCommand * DbParameter * DbParameterCollection * DbTransaction https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview was: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * DbConnection * DbCommand * DbParameter * DbParameterCollection * DbTransaction > .NET: Thin 3.0: Implement essential ADO.NET classes > --- > > Key: IGNITE-22131 > URL: https://issues.apache.org/jira/browse/IGNITE-22131 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > We already have *IgniteDbDataReader* (IGNITE-18478), let's add other > essential classes to enable integrations with higher-level frameworks (e.g. > EF Core - IGNITE-20475): > * DbConnection > * DbCommand > * DbParameter > * DbParameterCollection > * DbTransaction > https://learn.microsoft.com/en-us/dotnet/framework/data/adonet/ado-net-overview -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22131) .NET: Thin 3.0: Implement essential ADO.NET classes
[ https://issues.apache.org/jira/browse/IGNITE-22131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22131: Description: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * > .NET: Thin 3.0: Implement essential ADO.NET classes > --- > > Key: IGNITE-22131 > URL: https://issues.apache.org/jira/browse/IGNITE-22131 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > We already have *IgniteDbDataReader* (IGNITE-18478), let's add other > essential classes to enable integrations with higher-level frameworks (e.g. > EF Core - IGNITE-20475): > * -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Updated] (IGNITE-22131) .NET: Thin 3.0: Implement essential ADO.NET classes
[ https://issues.apache.org/jira/browse/IGNITE-22131?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pavel Tupitsyn updated IGNITE-22131: Description: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * DbConnection * DbCommand * DbParameter * DbParameterCollection * DbTransaction was: We already have *IgniteDbDataReader* (IGNITE-18478), let's add other essential classes to enable integrations with higher-level frameworks (e.g. EF Core - IGNITE-20475): * > .NET: Thin 3.0: Implement essential ADO.NET classes > --- > > Key: IGNITE-22131 > URL: https://issues.apache.org/jira/browse/IGNITE-22131 > Project: Ignite > Issue Type: New Feature > Components: platforms, thin client >Reporter: Pavel Tupitsyn >Assignee: Pavel Tupitsyn >Priority: Major > Labels: ignite-3 > > We already have *IgniteDbDataReader* (IGNITE-18478), let's add other > essential classes to enable integrations with higher-level frameworks (e.g. > EF Core - IGNITE-20475): > * DbConnection > * DbCommand > * DbParameter > * DbParameterCollection > * DbTransaction -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Created] (IGNITE-22131) .NET: Thin 3.0: Implement essential ADO.NET classes
Pavel Tupitsyn created IGNITE-22131: --- Summary: .NET: Thin 3.0: Implement essential ADO.NET classes Key: IGNITE-22131 URL: https://issues.apache.org/jira/browse/IGNITE-22131 Project: Ignite Issue Type: New Feature Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (IGNITE-21538) Rework component lifecycle mode to asynchronous
[ https://issues.apache.org/jira/browse/IGNITE-21538?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Kirill Sizov resolved IGNITE-21538. Resolution: Done The PoC has been developed within this task. For further implementation of this functionality specific tasks will be created. > Rework component lifecycle mode to asynchronous > --- > > Key: IGNITE-21538 > URL: https://issues.apache.org/jira/browse/IGNITE-21538 > Project: Ignite > Issue Type: Task >Affects Versions: 3.0.0-beta2 >Reporter: Alexey Scherbakov >Assignee: Kirill Sizov >Priority: Major > Labels: ignite-3 > Fix For: 3.0 > > > Current design for comp lifecycle has issues: > 1. It was designed for synchronous components, but almost all components are > asynchronous. > This causes to appear ugly things like _inBusyLockAsync_ and inefficient code > like > _public @Nullable TxStateMeta stateMeta(UUID txId) \{ return > inBusyLock(busyLock, () -> txStateVolatileStorage.state(txId)); }_ > 2. Currently it's not possible to do truly graceful node shutdown, because IO > layer is disabled out-of-order, causing operation failures without a chance > to finish. > I suggest reworking comp lifecycle to async model: > 1. Each component tracks it's inflight async ops (as list of async chains) > 2. On start components are initialized using _CompletableFuture > startAsync()_ method from root to leafs of dependency tree > 3. On shutdown > 3.1 _CompletableFuturebeforeShutdown_ is called on comp from leafs to > root direction in dependency tree. This step waits for all active futures to > complete. Any new operation return a future completed with > _NodeStoppingException_ > 3.2 stop is called on comp from leafs to root direction in dependency tree. > This step destroys component resources, like pools, etc. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Assigned] (IGNITE-19762) Revisit data region management in rocksdb
[ https://issues.apache.org/jira/browse/IGNITE-19762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aleksandr Polovtsev reassigned IGNITE-19762: Assignee: Aleksandr Polovtsev > Revisit data region management in rocksdb > - > > Key: IGNITE-19762 > URL: https://issues.apache.org/jira/browse/IGNITE-19762 > Project: Ignite > Issue Type: Improvement >Reporter: Ivan Bessonov >Assignee: Aleksandr Polovtsev >Priority: Major > Labels: ignite-3 > > Right now it's not really straightforward, what these regions mean. > After https://issues.apache.org/jira/browse/IGNITE-19591, they are associated > wit a separate rocksdb instance each, in which case it's unfair to call them > regions anymore. More like storages. > But we still use the same non-configurable path, so there are no immediate > advantages over it. We must provide an adequate design for regions and > storages, basicacaly, and clean the mess that we currently have. -- This message was sent by Atlassian Jira (v8.20.10#820010)