Releases: akkadotnet/Akka.Persistence.Sql
Akka.Persistence.Sql v1.5.12-beta1
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:
- f50b41d Update RELEASE_NOTES.md for 1.5.12-beta1 (#298)
- b3ff3ec Bump Akka.NET and Akka.Hosting to 1.5.12 (#296)
- d7a64cd build(deps): Bump AkkaVersion from 1.5.9 to 1.5.11 (#291)
- 60a8e35 build(deps): Bump jetbrains.resharper.globaltools (#286)
- dee2e61 build(deps): bump xunit.runner.visualstudio from 2.4.5 to 2.5.0 (#277)
- 8dfd7f3 build(deps): bump Akka.Persistence.Sqlite from 1.5.8 to 1.5.9 (#282)
- 8052a17 Update documentations (#287)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.9-beta1
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:
- 34507d8 Update RELEASE_NOTES.md for 1.5.9-beta1 (#285)
- dbeb3d2 build(deps): bump BenchmarkDotNet from 0.13.5 to 0.13.6 (#279)
- 542501b build(deps): bump AkkaVersion from 1.5.8 to 1.5.9 (#281)
- 28492ea Fix Persistence.Query Hosting extension support. (#283)
- 027440c build(deps): bump xunit from 2.4.2 to 2.5.0 (#280)
- 8839dd6 build(deps): bump AkkaHostingVersion from 1.5.4 to 1.5.8.1 (#276)
- 3a95790 build(deps): bump Akka.Persistence.Sqlite from 1.5.4 to 1.5.8 (#270)
- 2634329 build(deps): bump Microsoft.Data.Sqlite.Core from 7.0.5 to 7.0.9 (#274)
- f8cab40 build(deps): bump AkkaVersion from 1.5.7 to 1.5.8 (#275)
- 465e87e Fix missing SQL query configuration file (#278)
See More
- 830235f build(deps): bump jetbrains.resharper.globaltools (#272)
- 837afa9 build(deps): bump Microsoft.NET.Test.Sdk from 17.6.0 to 17.6.3 (#273)
- 68a39a2 build(deps): bump AkkaVersion from 1.5.4 to 1.5.7 (#254)
- 4ea1f2f build(deps): bump Docker.DotNet from 3.125.14 to 3.125.15 (#258)
- 277968e build(deps): bump Microsoft.NET.Test.Sdk from 17.5.0 to 17.6.0 (#253)
- 3546bb1 refactor: cleanup naming, apply resharper hints (#243)
- e584b40 feat: upgrade to npgsql 7.0.4 (#242)
- 066cb28 refactor: make var names consistent (#239)
- 1aaf064 Bump jetbrains.resharper.globaltools from 2023.1.0 to 2023.1.1
- 89c0141 fix: add missing redis versions (#240)
- 66761c3 Merge pull request #238 from akkadotnet/CumpsD-patch-1
- 9ff3db4 Update README.md
- 48557fa docs: typo in Concurrent
This list of changes was auto generated.<...
Akka.Persistence.Sql v1.5.4-beta1
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:
- 7c8b70d Update RELEASE_NOTES.md for 1.5.4-beta1 release (#237)
- 1b8d7cd Bump FluentAssertions from 6.10.0 to 6.11.0 (#231)
- ea1e7d2 Update Akka.NET and Akka.Hosting to 1.5.4 (#236)
- 31b755a Fix transaction isolation level to a configurable setting (#207)
- dcfcd88 Bump AkkaVersion from 1.5.2 to 1.5.3 (#229)
- 799e249 Add DocFX support and documentations (#226)
- 12c626b Add Resharper InspectCode and CleanupCode Targets (#227)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.2-beta3
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:
- 4346859 Update RELEASE_NOTES.md for 1.5.2-beta3 release (#228)
- 6893233 Add missing migration parameters to Akka.Hosting extension method (#225)
- 35eca99 Optimize tag query by avoiding multi-query (#223)
- 599346e Optimize SeqNr and Tag queries (#222)
- 3a7c20a Bump LanguageExt.Core from 4.4.2 to 4.4.3 (#217)
- 5dc3c0a Add MySql support (#221)
- 1aca63e Fix table contraint and index SQL scripts (#220)
This list of changes was auto generated.
Akka.Persistence.Sql v1.5.2-beta2
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:
- 82beb35 Update RELEASE_NOTES.md for 1.5.2-beta2 (#219)
- 7d57091 Bump Docker.DotNet from 3.125.13 to 3.125.14 (#218)
- 9c7aa84 Fix snapshot table primary key and indexes (#216)
- 8c189f8 Update benchmark to cover more scenarios (#215)
- e9e5542 Update README.md (#213)
- 03a1c1f Update Akka.Persistence.Sql.HelperLib.csproj (#214)
- 2e86f30 Add tag query benchmark project (#212)
- fdd43b0 Fix journal and tag table indexing (#211)
- 009df37 Bump Microsoft.Data.Sqlite.Core from 7.0.4 to 7.0.5 (#210)
- ad45c9b Update RELEASE_NOTES.md for 1.5.2-beta1 release (#208)
See More
- 6311090 Add missing settings in Hosting extension method (#209)
- 5fb3de6 Add Akka.Hosting extension methods (#199)
- c36dbc9 Make snapshot table initialization asynchronous (#205)
- 605877e Fix bug in datetime column detection (#206)
- 16fb2d1 Bump Akka.Persistence.PostgreSql from 1.5.1.1 to 1.5.2 (#204)
- 091ff26 Bump Akka.Persistence.Sqlite from 1.5.1 to 1.5.2 (#202)
- c6d9ac7 Bump Akka.Persistence.SqlServer from 1.5.1 to 1.5.2 (#201)
- 7e8073f Bump AkkaVersion from 1.5.1 to 1.5.2 (#200)
- 52f4c19 Bump AkkaHostingVersion from 1.5.1 to 1.5.1.1 (#198)
- faff126 Update main README.md (#197)
- edbef9a Clean-up table creation, add indexing to mssql (#196)
- 4ad062d Change default config values to be more greenfield friendly (#195)
- 74ad14f Bump Microsoft.Data.SqlClient from 5.1.0 to 5.1.1 (#188)
- f329412 Add WriterUuid support (#192)
- e7a0d73 Fix query unit test, wait until write journal is ready (#193)
- 62a0698 Improve journal startup code (#189)
- c4e6b59 chore: copyright headers (#190)
- aa81f43 Add Csv and TagTable unit tests (#170)
- 2bdd123 feat: upgrade to linq2db 5.1.1 (#186)
- 2d4e8b7 feat: bump postgres, fixes #171 (#172)
- f08062e Look into supporting DateTime and long databases. (#175)
- 94e2dcc Merge branch 'dev' into split-snapshot-row
- 7c5a75f Fix tag mode bug (#185)
- aa9b119 Merge pull request #183 from Arkatufus/Fix_unordered_sequence_number
- dddb79a Fix tag table query ordering problem
- 7be5f44 fix: bump linq2db to 4.4.1 for npgsql 7 support
- cd55f21 refactor: prepopulate UseDateTime for perf
- 6c90022 feat: bump to linq2db 3.7.0
- 579d5c0 Merge branch 'dev' into split-snapshot-row
- 723123a feat: make AkkaDataConnection a facade for centralization
- 09dcdd5 feat: use the correct snapshot logic
- ecf9a2d Bump Akka.Persistence.PostgreSql from 1.5.1 to 1.5.1.1 (#174)
- 26d8d4c feat: split snapshotrow in datetime and long
- 1eea1bd chore: fix copyright header (#169)
- bebf7c0 Rebrand Linq2Db to Sql (#166)
- 73aa93c Upgrade package dependencies (#163)
- 37a6a99 Set up CI with Azure Pipelines
- 5d04289 Bump Microsoft.NET.Test.Sdk from 17.4.1 to 17.5.0 (#153)
- b2a49a1 style: resharper cleanup code (#159)
- f5a2f67 refactor: rename to akka.persistence.sql (#156)
- d6e7cf0 build: remove docfx (#157)
- cd969de refactor: standardize postgresql, sqlite naming (#155)
- f871940 Bump FluentMigratorVersion from 3.3.1 to 3.3.2 (#147)
- 999c628 feat: move to centralized package management (#154)
- cf46ce4 Add original DB insertion optimization (#141)
- 47a2921 Bump CommandLineParser from 2.8.0 to 2.9.1 (#146)
- 3c3b2e6 Bump FluentAssertions from 6.9.0 to 6.10.0 (#148)
- 1355641 Refactor test projects (#150)
- 93dcbd7 Add TagTable migration app (#149)
- 65adb7b Fix TagTable delete and queries operations (#145)
- d7f12fd Code cleanup (#143)
- 084da30 Bump AkkaVersion from 1.4.46 to 1.4.49 (#142)
- dfdfe13 Bump MySql.Data from 8.0.28 to 8.0.32 (#134)
- e8da894 Change default journal read and write mode to tag table (#138)
- 095832a Remove WriterUuid column from tag table (#137)
- 878bbd3 Cleanup solution structure (#136)
- a26036e Tag table with backwards compatibility (#68)
- dcc49a6 Refactor compatibility settings to be more generic (#130)
- cc87494 Add tag table S...
Akka.Persistence.Sql v1.5.2-beta1
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:
- ad45c9b Update RELEASE_NOTES.md for 1.5.2-beta1 release (#208)
- 6311090 Add missing settings in Hosting extension method (#209)
- 5fb3de6 Add Akka.Hosting extension methods (#199)
- c36dbc9 Make snapshot table initialization asynchronous (#205)
- 605877e Fix bug in datetime column detection (#206)
- 16fb2d1 Bump Akka.Persistence.PostgreSql from 1.5.1.1 to 1.5.2 (#204)
- 091ff26 Bump Akka.Persistence.Sqlite from 1.5.1 to 1.5.2 (#202)
- c6d9ac7 Bump Akka.Persistence.SqlServer from 1.5.1 to 1.5.2 (#201)
- 7e8073f Bump AkkaVersion from 1.5.1 to 1.5.2 (#200)
- 52f4c19 Bump AkkaHostingVersion from 1.5.1 to 1.5.1.1 (#198)
See More
- faff126 Update main README.md (#197)
- edbef9a Clean-up table creation, add indexing to mssql (#196)
- 4ad062d Change default config values to be more greenfield friendly (#195)
- 74ad14f Bump Microsoft.Data.SqlClient from 5.1.0 to 5.1.1 (#188)
- f329412 Add WriterUuid support (#192)
- e7a0d73 Fix query unit test, wait until write journal is ready (#193)
- 62a0698 Improve journal startup code (#189)
- c4e6b59 chore: copyright headers (#190)
- aa81f43 Add Csv and TagTable unit tests (#170)
- 2bdd123 feat: upgrade to linq2db 5.1.1 (#186)
- 2d4e8b7 feat: bump postgres, fixes #171 (#172)
- f08062e Look into supporting DateTime and long databases. (#175)
- 94e2dcc Merge branch 'dev' into split-snapshot-row
- 7c5a75f Fix tag mode bug (#185)
- aa9b119 Merge pull request #183 from Arkatufus/Fix_unordered_sequence_number
- dddb79a Fix tag table query ordering problem
- 7be5f44 fix: bump linq2db to 4.4.1 for npgsql 7 support
- cd55f21 refactor: prepopulate UseDateTime for perf
- 6c90022 feat: bump to linq2db 3.7.0
- 579d5c0 Merge branch 'dev' into split-snapshot-row
- 723123a feat: make AkkaDataConnection a facade for centralization
- 09dcdd5 feat: use the correct snapshot logic
- ecf9a2d Bump Akka.Persistence.PostgreSql from 1.5.1 to 1.5.1.1 (#174)
- 26d8d4c feat: split snapshotrow in datetime and long
- 1eea1bd chore: fix copyright header (#169)
- bebf7c0 Rebrand Linq2Db to Sql (#166)
- 73aa93c Upgrade package dependencies (#163)
- 37a6a99 Set up CI with Azure Pipelines
- 5d04289 Bump Microsoft.NET.Test.Sdk from 17.4.1 to 17.5.0 (#153)
- b2a49a1 style: resharper cleanup code (#159)
- f5a2f67 refactor: rename to akka.persistence.sql (#156)
- d6e7cf0 build: remove docfx (#157)
- cd969de refactor: standardize postgresql, sqlite naming (#155)
- f871940 Bump FluentMigratorVersion from 3.3.1 to 3.3.2 (#147)
- 999c628 feat: move to centralized package management (#154)
- cf46ce4 Add original DB insertion optimization (#141)
- 47a2921 Bump CommandLineParser from 2.8.0 to 2.9.1 (#146)
- 3c3b2e6 Bump FluentAssertions from 6.9.0 to 6.10.0 (#148)
- 1355641 Refactor test projects (#150)
- 93dcbd7 Add TagTable migration app (#149)
- 65adb7b Fix TagTable delete and queries operations (#145)
- d7f12fd Code cleanup (#143)
- 084da30 Bump AkkaVersion from 1.4.46 to 1.4.49 (#142)
- dfdfe13 Bump MySql.Data from 8.0.28 to 8.0.32 (#134)
- e8da894 Change default journal read and write mode to tag table (#138)
- 095832a Remove WriterUuid column from tag table (#137)
- 878bbd3 Cleanup solution structure (#136)
- a26036e Tag table with backwards compatibility (#68)
- dcc49a6 Refactor compatibility settings to be more generic (#130)
- cc87494 Add tag table SQL migration scripts (#131)
- 5931c42 Remove actor names from unit tests (#133)
- f8e6ee6 Refactor compatibility unit tests to use TestKit (#132)
- edd8c15 Remove
logical-delete
option from HOCON config (#124) - e3efd1e Fix/harden Akka.Persistence.Linq2Db.Compatibility.Tests (#125)
- 9a8428e Add data compatibility checker (#117)
- d328107 Bump System.Data.SqlClient from 4.8.4 to 4.8.5 (#114)
- d0cfde2 Bump AkkaVersion from 1.4.45 to 1.4.46 (#122)
- cdd52ab Fix read journal, missing
_includeDeleted
checks (#121) - 58789d5 Revert change from List to ImmutableList (#118)
- fa8ff80 Code cleanup (#116)
- 0458083 Fix several bugs (#115)
- 958f049 Fix inconsistent HOCON property naming and access, add MySql compat settings (#108)
- ad04298 Bump Microsoft.NET.Test.Sdk from 17.3.2 to 17.4.0 (#110)
- 2d400b1 Bump Docker.DotNet from 3.125.4 to 3.125.12 (#111)
- d845fb3 Update common.props usage and upgrade all package versions (#107)
- 6a009a4 Bump System.Data.SQLite.Core from 1.0.113.1 to 1.0.116 (#84)
- 9a7b4eb Bump StackExchange.Redis from 2.2.62 to 2.6.45 (#89)
- 7197880 Changeup behavior of MaxSequenceNumber to use Max wherever possible. (#47)
This list of changes was auto generated.
Akka.Persistence.Linq2Db v1.4.28
1.4.28 Nov 18 2021
Perf Enhancements and fixes to failure reporting
There was an issue found where persistence failures were being reported as rejections when they should not have. This has been fixed alongside some logic cleanup that should lead to more consistent performance.
1.4.21 July 6 2021
First official Release for Akka.Persistence.Linq2Db
Akka.Persistence.Linq2Db is an Akka.Net Persistence plug-in that is designed for both high performance as well as easy cross-database compatibility.
There is a compatibility mode also available for those who wish to migrate from the existing Sql.Common journals.
This release contains fixes for Transactions around batched writes, a fix for Sequence Number reading on Aggressive PersistAsync Usage, improved serialization/deserialization pipelines for improved write speed, and easier snapshot compatibility with Akka.Persistence.Sql.Common.
We are still looking for community help with adding tests/configurations for MySql and Oracle, as well as trying out the new plugin and providing feedback.
Please refer to the project page for information on configuration.
0.90.1 Feb 3 2021
Preview Release for Akka.Persistence.Linq2Db
Akka.Persistence.Linq2Db is an Akka.Net Persistence plug-in that is designed for both high performance as well as easy cross-database compatibility.
This is currently marked as a preview release, with tests passing for MS Sql Server, Postgres, and SQLite. We are looking for community help with adding tests, as well as trying out the new plugin and providing feedback.
There is a compatibility mode also available for those who wish to migrate from the existing Sql.Common journals.
Please refer to the project page for information on configuration.
Changes:
- d9de166 Merge pull request #44 from akkadotnet/dev
- 7469ac7 release notes (#30)
- 1588ffe added dependabot.yml (#32)
- 7b48f78 Upgrade to Ubuntu 20.04 (#31)
- 61fb205 Fix issue where Persist failures were being reported as rejects. (#29)
This list of changes was auto generated.
Akka.Persistence.Linq2Db v1.4.21
1.4.21 July 6 2021
First official Release for Akka.Persistence.Linq2Db
Akka.Persistence.Linq2Db is an Akka.Net Persistence plug-in that is designed for both high performance as well as easy cross-database compatibility.
There is a compatibility mode also available for those who wish to migrate from the existing Sql.Common journals.
This release contains fixes for Transactions around batched writes, a fix for Sequence Number reading on Aggressive PersistAsync Usage, improved serialization/deserialization pipelines for improved write speed, and easier snapshot compatibility with Akka.Persistence.Sql.Common.
We are still looking for community help with adding tests/configurations for MySql and Oracle, as well as trying out the new plugin and providing feedback.
Please refer to the project page for information on configuration.
Changes:
- 170c39a Merge pull request #28 from akkadotnet/dev
- 644f270 release notes (#27)
- 1432e22 update readme.md (#26)
- 103d483 Fix pendingwrite clear on persistasync edge case (#25)
- 24a798d Serialization pipeline Fixes/improvements (#22)
- a8f9055 Disable PR support for Akka.Persistence.Linq2Db release pipeline
This list of changes was auto generated.
Akka.Persistence.Linq2Db v0.90.1
0.90.1 Feb 3 2021
Preview Release for Akka.Persistence.Linq2Db
Akka.Persistence.Linq2Db is an Akka.Net Persistence plug-in that is designed for both high performance as well as easy cross-database compatibility.
This is currently marked as a preview release, with tests passing for MS Sql Server, Postgres, and SQLite. We are looking for community help with adding tests, as well as trying out the new plugin and providing feedback.
There is a compatibility mode also available for those who wish to migrate from the existing Sql.Common journals.
Please refer to the project page for information on configuration.
Changes:
- e06499a Merge pull request #17 from akkadotnet/dev
- 3a08414 Set up CI with Azure Pipelines
- 579b210 Update RELEASE_NOTES.md
- 9802870 Preview release 0.90.1 (#15)
- b853d5c Allow init warning turnoff (#14)
- 446d02c Merge pull request #13 from akkadotnet/master
- 9a89bb0 Merge pull request #10 from to11mtm/add-allevents-and-currentallevents
- 38b2b79 clean up actor names for CI runs
- 7d59064 Fix Docker tests to only run in Linux environment on build script
- 9e145f5 Rename Docker tests for CI to pick up.
See More
- 86bea7a move everything to core 3.1 for ci testing
- cfc73ca Merge branch 'dev' of https://github.com/akkadotnet/Akka.Persistence.Linq2Db into add-allevents-and-currentallevents
- fae0539 migrated build scripts to install .NET Core 3.1 (#12)
- fd06ca4 Fix perf regression on recovery
- b6fbf9a update to linq2db 3.2.3
- 1a18e5d clean up configs and readme
- a559909 Clean up Async Stages, lower some allocations on ser/deser
- bc9f264 update to 1.14
- 571bd18 update to 1.14
- 15e8c0d clean up just a bit
- 0d3914b Make DB calls for Linq2DbReadJournal async
- 6560365 Fixup Journal Sequence calls to be lazy
- b702eba Fixup configs in query specs for proper use of table names.
- 8044daa Fixup Persistence Queries to be properly 'lazy' in necessary source stages.
- 3e8f88b - Added Support for IAllEventsQuery
- d50d134 Move into Project Repo (#1)
This list of changes was auto generated.