Releases: akkadotnet/Akka.Persistence.Sql
Akka.Persistence.Sql v1.5.30
1.5.30 October 4th 2024
- Bump Akka to 1.5.30
- Bump Akka.Hosting to v1.5.30
- PostgreSql: Use BIGINT for ordering column if PostgreSql version is greater than 10
1.5.28 September 9th 2024
- Bump Akka to 1.5.28
- Bump Akka.Hosting to v1.5.28
- Harden SQL journal and snapshot store against initialization failures
- Cleanup nullability warnings
- Port Akka.NET #7313: Made DateTime.UtcNow the default timestamp for SnapshotMetadata
- Add DataOptions support
Linq2Db DataOptions Support
You can now use DataOptions to set up your persistence journal, read journal, and snapshot store with a new Akka.Persistence.Sql.Hosting
API.
Here is an example of setting up persistence on PostgreSQL using NpgsqlDataSource
instead of the previous connection string and provider name setup.
var dataSource = new NpgsqlDataSourceBuilder(_myConnectionString).Build();
var dataOptions = new DataOptions()
.UseDataProvider(DataConnection.GetDataProvider(ProviderName.PostgreSQL, dataSource.ConnectionString))
.UseProvider(ProviderName.PostgreSQL)
.UseConnectionFactory((opt) => dataSource.CreateConnection());
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(dataOptions);
});
});
1.5.27.1 August 1st 2024
1.5.27 July 30th 2024
- Bump Akka to 1.5.27.1
- Bump Akka.Hosting to v1.5.27
- Resolved: Auto initialization of tables isn't supported from the read journal side.
- Add EventEnvelope Tags support on queries
1.5.26 July 9th 2024
- Bump AkkaVersion to 1.5.26
- Bump LanguageExt.Core to 4.4.9
- Fix long delay during JournalSequenceActor initialization
1.5.25 June 17th 2024
1.5.24 June 13th 2024
- Bump AkkaVersion to 1.5.24
- Bump Akka.Hosting version to 1.5.24
- Fix missing Query configuration value override for non-default journal ids
- Bump System.Reactive.Linq version to 6.0.1
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
1.5.14-alpha April 19 2024
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benc...
Akka.Persistence.Sql v1.5.28
1.5.28 September 9th 2024
- Bump Akka to 1.5.28
- Bump Akka.Hosting to v1.5.28
- Harden SQL journal and snapshot store against initialization failures
- Cleanup nullability warnings
- Port Akka.NET #7313: Made DateTime.UtcNow the default timestamp for SnapshotMetadata
- Add DataOptions support
Linq2Db DataOptions Support
You can now use DataOptions to set up your persistence journal, read journal, and snapshot store with a new Akka.Persistence.Sql.Hosting
API.
Here is an example of setting up persistence on PostgreSQL using NpgsqlDataSource
instead of the previous connection string and provider name setup.
var dataSource = new NpgsqlDataSourceBuilder(_myConnectionString).Build();
var dataOptions = new DataOptions()
.UseDataProvider(DataConnection.GetDataProvider(ProviderName.PostgreSQL, dataSource.ConnectionString))
.UseProvider(ProviderName.PostgreSQL)
.UseConnectionFactory((opt) => dataSource.CreateConnection());
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(dataOptions);
});
});
Changes:
- 5f35062 Update RELEASE_NOTES.md for 1.5.28 release (#457)
- 5eb18b9 Adds DataOptionsSetup (#456)
- 3f03bfd Add SnapshotStore save snapshot spec (#455)
- 039dd08 Bump Akka and Akka.Hosting to 1.5.28 (#454)
- 64bdd34 Port akkadotnet/akka.net#7313 (#448)
- ce5bc63 Modernize benchmark tests (#447)
- 09b8c15 Cleanup #nullability warnings (#437)
- 7f5a65b build(deps): bump Microsoft.Data.SqlClient from 5.2.1 to 5.2.2 (#446)
- 8595497 build(deps): bump jetbrains.resharper.globaltools (#445)
- 3647e9a build(deps): bump Microsoft.NET.Test.Sdk from 17.10.0 to 17.11.0 (#442)
See More
- 397fbbc build(deps): bump jetbrains.resharper.globaltools (#443)
- 974c537 Harden SQL journal and snapshot store against initialization failures (#444)
- 9b67712 build(deps): bump BenchmarkDotNet from 0.13.12 to 0.14.0 (#433)
- 69d3753 build(deps): bump jetbrains.resharper.globaltools (#431)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.27.1
1.5.27.1 August 1st 2024
1.5.27 July 30th 2024
- Bump Akka to 1.5.27.1
- Bump Akka.Hosting to v1.5.27
- Resolved: Auto initialization of tables isn't supported from the read journal side.
- Add EventEnvelope Tags support on queries
1.5.26 July 9th 2024
- Bump AkkaVersion to 1.5.26
- Bump LanguageExt.Core to 4.4.9
- Fix long delay during JournalSequenceActor initialization
1.5.25 June 17th 2024
1.5.24 June 13th 2024
- Bump AkkaVersion to 1.5.24
- Bump Akka.Hosting version to 1.5.24
- Fix missing Query configuration value override for non-default journal ids
- Bump System.Reactive.Linq version to 6.0.1
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
1.5.14-alpha April 19 2024
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
st...
Akka.Persistence.Sql v1.5.27
1.5.27 July 30th 2024
- Bump Akka to 1.5.27.1
- Bump Akka.Hosting to v1.5.27
- Resolved: Auto initialization of tables isn't supported from the read journal side.
- Add EventEnvelope Tags support on queries
1.5.26 July 9th 2024
- Bump AkkaVersion to 1.5.26
- Bump LanguageExt.Core to 4.4.9
- Fix long delay during JournalSequenceActor initialization
1.5.25 June 17th 2024
1.5.24 June 13th 2024
- Bump AkkaVersion to 1.5.24
- Bump Akka.Hosting version to 1.5.24
- Fix missing Query configuration value override for non-default journal ids
- Bump System.Reactive.Linq version to 6.0.1
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
1.5.14-alpha April 19 2024
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
static class. Refer to the Members of LinqToDb.ProviderName
for included providers.
HOCON Configuration Setup
...
Akka.Persistence.Sql v1.5.26
1.5.26 July 9th 2024
- Bump AkkaVersion to 1.5.26
- Bump LanguageExt.Core to 4.4.9
- Fix long delay during JournalSequenceActor initialization
Changes:
- 68a87dd Update RELEASE_NOTES.md for 1.5.26 release (#418)
- 02501ba Fixes incorrect parameter in JournalSequenceActor, causing AssumeMaxOrderingId to not working as expected (#415)
- 77e7736 build(deps): bump LanguageExt.Core from 4.4.8 to 4.4.9 (#411)
- ace0aaa build(deps): bump AkkaVersion from 1.5.25 to 1.5.26 (#412)
- 7c8ffc0 build(deps): bump jetbrains.resharper.globaltools (#410)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.25
1.5.25 June 17th 2024
1.5.24 June 13th 2024
- Bump AkkaVersion to 1.5.24
- Bump Akka.Hosting version to 1.5.24
- Fix missing Query configuration value override for non-default journal ids
- Bump System.Reactive.Linq version to 6.0.1
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
1.5.14-alpha April 19 2024
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
static class. Refer to the Members of LinqToDb.ProviderName
for included providers.
HOCON Configuration Setup
akka.persistence {
journal {
plugin = "akka.persistence.journal.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
}
- database-connection-string: The proper connection string to your database of choice.
- provider-name: A string constant defining the database type to connect to, valid values are defined inside
LinqToDB.ProviderName
static class. Refer to the Members ofLinqToDb.ProviderName
for include...
Akka.Persistence.Sql v1.5.24
1.5.24 June 13th 2024
- Bump AkkaVersion to 1.5.24
- Bump Akka.Hosting version to 1.5.24
- Fix missing Query configuration value override for non-default journal ids
- Bump System.Reactive.Linq version to 6.0.1
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
1.5.14-alpha April 19 2024
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
static class. Refer to the Members of LinqToDb.ProviderName
for included providers.
HOCON Configuration Setup
akka.persistence {
journal {
plugin = "akka.persistence.journal.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
}
- database-connection-string: The proper connection string to your database of choice.
- provider-name: A string constant defining the database type to connect to, valid values are defined inside
LinqToDB.ProviderName
static class. Refer to the Members ofLinqToDb.ProviderName
for included providers.
Changes:
Akka.Persistence.Sql v1.5.20
1.5.20 May 8th 2024
- Fix missing take and optimize captures
- Bump Linq2Db to 5.4.1
- Bump AkkaVersion to 1.5.20
- Bump Akka.Hosting version to 1.5.20
- Bump FluentMigrator version to 5.2.0
- Bump LanguageExt.Core version to 4.4.8
Changes:
- 5b563f9 Change pack step to use powershell instead (#386)
- 1ad913e Fix UseDotNet@2 to use global.json like the PR validation script (#385)
- 122369d Fix release yaml script (#384)
- e073e58 build(deps): bump Npgsql from 8.0.2 to 8.0.3 (#383)
- c241194 Remove FAKE from build system (#382)
- a6f3928 Update RELEASE_NOTES.md for 1.5.20 release (#381)
- 0e5419e build(deps): bump jetbrains.resharper.globaltools (#380)
- fb0886c build(deps): bump Microsoft.Data.SqlClient from 5.1.4 to 5.2.0 (#379)
- 49ca5d9 build(deps): bump Microsoft.NET.Test.Sdk from 17.7.2 to 17.9.0 (#373)
- eb854c2 build(deps): bump Npgsql from 7.0.6 to 8.0.2 (#377)
See More
- 44ceb17 build(deps): bump coverlet.collector from 6.0.0 to 6.0.2 (#376)
- 647fd0e build(deps): bump MySql.Data from 8.3.0 to 8.4.0 (#374)
- 62650f8 build(deps): bump Microsoft.SqlServer.SqlManagementObjects (#375)
- 2297be9 build(deps): bump FluentMigratorVersion from 3.3.2 to 5.2.0 (#372)
- d7d12eb Bump AkkaVersion and AkkaHostingVersion to 1.5.20 (#371)
- 77e7c72 build(deps): bump LanguageExt.Core from 4.4.7 to 4.4.8 (#364)
- b07946c build(deps): bump Akka.Persistence.SqlServer and Microsoft.Data.SqlClient (#369)
- 719ea8f build(deps): bump Microsoft.SourceLink.GitHub from 1.1.1 to 8.0.0 (#366)
- 5845aac build(deps): bump MicrosoftSqliteVersion from 7.0.11 to 8.0.4 (#368)
- 345885f Bump XUnit and XUnit runner version to 2.8.0 (#370)
- b32e7a4 build(deps): bump Akka.Persistence.MySql from 1.5.4.1 to 1.5.13 (#329)
- b2ad118 build(deps): bump linq2db from 5.2.2 to 5.4.1 (#356)
- 9f76703 build(deps): bump AkkaHostingVersion from 1.5.12.1 to 1.5.19 (#365)
- c8f8100 build(deps): bump Akka.Persistence.PostgreSql, Akka.Persistence and Akka (#353)
- 48aa3a8 Migrate build system to net8 / fake v6 (#361)
- fe49a6b Fix Missing take and optimize some captures (#347)
- 52bcfcc build(deps): bump Akka.Persistence.Redis from 1.5.0 to 1.5.13 (#335)
- 85c7e54 build(deps): bump LanguageExt.Core from 4.4.5 to 4.4.7 (#341)
- 155e8fb build(deps): bump LanguageExt.Core from 4.4.4 to 4.4.5 (#323)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.13
1.5.13 September 28 2023
- Update Akka.NET to 1.5.13
- Fix missing Persistence.Query configuration in legacy HOCON configuration mode
- Bump Akka.Hosting version to 1.5.12.1
- Bump Language.Ext.Core version to 4.4.4
- Bump System.Reactive.Linq version to 6.0.0
- Bump linq2db version to 5.2.2
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
static class. Refer to the Members of LinqToDb.ProviderName
for included providers.
HOCON Configuration Setup
akka.persistence {
journal {
plugin = "akka.persistence.journal.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
}
- database-connection-string: The proper connection string to your database of choice.
- provider-name: A string constant defining the database type to connect to, valid values are defined inside
LinqToDB.ProviderName
static class. Refer to the Members ofLinqToDb.ProviderName
for included providers.
Changes:
- e577632 Update RELEASE_NOTES.md for 1.5.13 release (#328)
- 033f5d5 build(deps): bump jetbrains.resharper.globaltools (#326)
- d43af21 build(deps): bump FluentAssertions from 5.10.3 to 6.12.0 (#309)
- 99612bc build(deps): bump SqliteVersion from 1.0.117 to 1.0.118 (#267)
- 98c7396 build(deps): bump linq2db from 5.1.1 to 5.2.2 (#266)
- f2aaaca build(deps): bump Microsoft.SqlServer.SqlManagementObjects (#263)
- 4a71d29 build(deps): bump coverlet.collector from 3.2.0 to 6.0.0 (#261)
- ac8fd20 build(deps): bump System.Reactive.Linq from 5.0.0 to 6.0.0 (#260)
- 3cfbc03 build(deps): bump xunit.runner.visualstudio from 2.4.5 to 2.5.1 (#327)
- 427ef0d build(deps): bump xunit from 2.5.0 to 2.5.1 (#320)
Akka.Persistence.Sql v1.5.12
1.5.12 August 8 2023
Akka.Persistence.Sql is now out of beta and ready for general use.
1.5.12-beta1 August 4 2023
1.5.9-beta1 July 20 2023
- Update Akka.NET to 1.5.9
- Bump Akka.Hosting to 1.5.8.1
- Persistence.Query: Fix invalid generated HOCON config
1.5.4-beta1 April 25 2023
Added transaction for every SQL queries with adjustable isolation level for read and write operations. You can go to the official Microsoft documentation to read more about these transaction isolation level settings.
Four new HOCON settings are introduced:
akka.persistence.journal.sql.read-isolation-level
akka.persistence.journal.sql.write-isolation-level
akka.persistence.snapshot-store.sql.read-isolation-level
akka.persistence.snapshot-store.sql.write-isolation-level
In Akka.Persistence.Sql.Hosting, These settings can be set programmatically through these new properties:
SqlJournalOptions.ReadIsolationLevel
SqlJournalOptions.WriteIsolationLevel
SqlSnapshotOptions.ReadIsolationLevel
SqlSnapshotOptions.WriteIsolationLevel
NOTE
Currently, there is a bug with Linq2Db and MySql implementation that can cause the SQL generator to throw an exception if you use the default
IsolationLevel.Unspecified
setting. Please useIsolationLevel.ReadCommitted
if this happens to you.
1.5.2-beta3 April 19 2023
NOTE: Database schema changes
1.5.2-beta2 package should be considered as deprecated. If you experimented with 1.5.2-beta1 and/or 1.5.2-beta2, you will need to drop existing persistence tables and recreate them using 1.5.2-beta3
- Fix SQL scripts for database table constraint and indices
- Add official MySql support
- Optimize sequence number and tag query
- Optimize tag query by avoiding multiple DB queries
- Add missing migration support to hosting extension method
This beta version introduces database schema optimization to:
- Improve the tag table based query performance even more.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
- Numbers are measured as the time required to complete one operation (complete retrieval of N tagged events).
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,760.393 ms | 27.1970 ms | 25.4401 ms |
100 | Csv | 1,766.355 ms | 25.0182 ms | 23.4021 ms |
1000 | Csv | 1,755.960 ms | 33.8171 ms | 34.7276 ms |
10000 | Csv | 1,905.026 ms | 22.3564 ms | 20.9122 ms |
10 | TagTable | 2.336 ms | 0.0389 ms | 0.0344 ms |
100 | TagTable | 3.943 ms | 0.0705 ms | 0.0660 ms |
1000 | TagTable | 18.597 ms | 0.3570 ms | 0.3506 ms |
10000 | TagTable | 184.446 ms | 3.3447 ms | 2.9650 ms |
1.5.2-beta2 April 14 2023
NOTE: Database schema changes
1.5.2-beta1 package should be considered as deprecated. If you experimented with 1.5.2-beta1, you will need to drop existing persistence tables and recreate them using 1.5.2-beta2
- Fix event journal table and tag table constraints and indices
- Fix snapshot table constraints and indices
This beta version introduces database schema optimization to:
- Improve the tag table based query performance, without compromising overall persistence performance.
- Improve inter-compatibility with other SQL persistence plugins.
Tag Query Benchmark
Benchmark is performed on a worst possible scenario:
- Event journal table with 3 million row entries
- Tagged events near the end of the table
Tag Count | TagMode | Mean | Error | StdDev |
---|---|---|---|---|
10 | Csv | 1,746.621 ms | 27.8946 ms | 29.8469 ms |
100 | Csv | 1,724.465 ms | 25.4638 ms | 23.8189 ms |
1000 | Csv | 1,723.063 ms | 26.2311 ms | 24.5366 ms |
10000 | Csv | 1,873.467 ms | 26.1173 ms | 23.1523 ms |
10 | TagTable | 3.201 ms | 0.0633 ms | 0.1479 ms |
100 | TagTable | 5.163 ms | 0.1018 ms | 0.1358 ms |
1000 | TagTable | 25.545 ms | 0.4952 ms | 0.4864 ms |
10000 | TagTable | 441.877 ms | 3.5410 ms | 2.9569 ms |
1.5.2-beta1 April 12 2023
NOTE: This beta release is intended for greenfield projects only.
Until backward compatibility is properly tested and documented, it is recommended to use this plugin only on new greenfield projects that does not rely on existing persisted data.
Akka.Persistence.Sql is a successor of Akka.Persistence.Linq2Db. It is being retooled to provide a better inter-compatibility with other SQL based Akka.Persistence plugin family.
Currently supported database family:
- Microsoft SQL Server
- MS SQLite
- System.Data.SQLite
- PostgreSQL using binary payload
Akka.Hosting Extension Setup
Assuming a MS SQL Server 2019 setup:
var host = new HostBuilder()
.ConfigureServices((context, services) => {
services.AddAkka("my-system-name", (builder, provider) =>
{
builder.WithSqlPersistence(
connectionString: _myConnectionString,
providerName: ProviderName.SqlServer2019)
});
})
ProviderName is a string constant defining the database type to connect to, valid values are defined inside LinqToDB.ProviderName
static class. Refer to the Members of LinqToDb.ProviderName
for included providers.
HOCON Configuration Setup
akka.persistence {
journal {
plugin = "akka.persistence.journal.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
snapshot-store {
plugin = "akka.persistence.snapshot-store.sql"
sql {
connection-string = "{database-connection-string}"
provider-name = "{provider-name}"
}
}
}
- database-connection-string: The proper connection string to your database of choice.
- provider-name: A string constant defining the database type to connect to, valid values are defined inside
LinqToDB.ProviderName
static class. Refer to the Members ofLinqToDb.ProviderName
for included providers.
Changes:
- 2c3e849 Update RELEASE_NOTES.md for 1.5.12 release (#305)
- e14e045 Add migration informations (#304)
- c0513b4 Add video link in migration walthrough (#303)
- a805876 fix typo in migration.md
- 796c024 Update benchmarks.md
- a85b661 Update README.md
- d3dea25 Add migration tutorial documentation (#302)
This list of changes was auto generated.