Skip to content

Releases: akkadotnet/Akka.Persistence.Sql

Akka.Persistence.Sql v1.5.26

09 Jul 14:45
68a87dd
Compare
Choose a tag to compare

1.5.26 July 9th 2024

1.5.25 June 17th 2024

1.5.24 June 13th 2024

1.5.20 May 8th 2024

1.5.14-alpha April 19 2024

1.5.13 September 28 2023

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

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 use IsolationLevel.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

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

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-...
Read more

Akka.Persistence.Sql v1.5.25

17 Jun 16:57
68d4534
Compare
Choose a tag to compare

1.5.25 June 17th 2024

1.5.24 June 13th 2024

1.5.20 May 8th 2024

1.5.14-alpha April 19 2024

1.5.13 September 28 2023

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

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 use IsolationLevel.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

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

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 of LinqToDb.ProviderName for include...
Read more

Akka.Persistence.Sql v1.5.24

13 Jun 19:15
c1a8987
Compare
Choose a tag to compare

1.5.24 June 13th 2024

1.5.20 May 8th 2024

1.5.14-alpha April 19 2024

1.5.13 September 28 2023

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

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 use IsolationLevel.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

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

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 of LinqToDb.ProviderName for included providers.

Changes:

Read more

Akka.Persistence.Sql v1.5.20

10 May 16:51
5b563f9
Compare
Choose a tag to compare

1.5.20 May 8th 2024

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

27 Sep 19:21
e577632
Compare
Choose a tag to compare

1.5.13 September 28 2023

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

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 use IsolationLevel.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

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

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 of LinqToDb.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)
See More
Read more

Akka.Persistence.Sql v1.5.12

08 Aug 14:30
2c3e849
Compare
Choose a tag to compare

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

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 use IsolationLevel.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

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

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 of LinqToDb.ProviderName for included providers.

Changes:

This list of changes was auto generated.

Akka.Persistence.Sql v1.5.12-beta1

04 Aug 16:03
f50b41d
Compare
Choose a tag to compare

1.5.12-beta1 August 4 2023

1.5.9-beta1 July 20 2023

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 use IsolationLevel.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

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

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 of LinqToDb.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

20 Jul 17:41
34507d8
Compare
Choose a tag to compare

1.5.9-beta1 July 20 2023

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 use IsolationLevel.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

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

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 of LinqToDb.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.<...

Read more

Akka.Persistence.Sql v1.5.4-beta1

26 Apr 02:14
7c8b70d
Compare
Choose a tag to compare

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 use IsolationLevel.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

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

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 of LinqToDb.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

19 Apr 15:46
4346859
Compare
Choose a tag to compare

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

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

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 of LinqToDb.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.