ArgentSeaLogo
ArgentSea is a .NET open source framework for accessing databases, built for simplicity, high-performance and global scale.
ArgentSea is a .NET open source framework for accessing databases,
built for simplicity, high-performance and global scale.
The Problem

Building data storage for internet-scale growth requires scale-out strategies, like dividing the data load between multiple data servers (“sharding”), reading from passive or mirrored servers, and even globally staging data segments across regional data centers. ArgentSea is the only .NET data access framework designed to support this.

Of course, every other aspect of ArgentSea is tuned for performance and supportability. Its power, flexibility, and ease of development make it a great choice even for applications that do not require data scaling.


Feature Overview

Sharding
Sharding is the technique of distributing your data across multiple database servers. This is the most cost-effective way to manage growth on high-volume systems. It also enables regionally distributed data, for performance or for privacy compliance. Sharding can be complex to implement, but ArgentSea offers the tools and patterns to make it nearly as easy as working with non-sharded data.
Mapping
Mapping allows you to read or write to a database while writing very little code. By adding attributes to your model classes, you can automatically map a property to a parameter or resultset column. The Mapper maps nullable types to/from Db Null values, handles Enum values, and supports complex child objects, including lists and child objects. Most importantly, the Mapper is fast — as fast as laboriously hand-optimized code, but much easier to maintain.
Configuration
ArgentSea’s unique “configuration inheritance” architecture dramatically simplifies working with multiple data connections. This is essential for managing shards, but also for just scaling out read connections to standby/mirrored endpoints. By fully embracing the .NET Core configuration architecture, ArgentSea offers incredible flexibility, improved security, and deployments without messy file transformations.
Resilience
ArgentSea automatically retries database commands that fail due to transient errors. You have detailed control over how often and how many retries should be attempted. On persistent failures, “circuit breaking” this may keep a server alive, even if a data connection is down.
Performance
ArgentSea is written with performance in mind. The use of stored procedures optimizes data access by reducing compilation overhead, makes it easier to tune the database, and helps reduce the number of database server round-trips. The mapping component uses Expression Trees, so it offers native-code performance for all mapped activity. Shard queries are multi-threaded, for simultaneous access across multiple shards.
Tooling
Tooling
Robust, high-performance logging provides monitoring insight into the library behavior, performance, and operational problems. This includes the code that is generated by the mapper’s Expression Trees. Log to Application Insights, Amazon CloudWatch, Windows, or any .NET logging solution. ArgentSea also includes a separate desktop application that can further reduce coding labor by automatically creating read/insert/update/delete stored procedures from tables and also model classes (with attributes) from stored procedures.

Supported databases
SQL Server
• SQL Server 2017 and older
• SQL Server Express
• Azure SQL Database
PostgreSQL
• PostgreSQL database
• Amazon RDS for PostgreSQL
• Amazon Aurora
• Azure Database for PostgreSQL
• Google Cloud Sql for PostgreSQL

Status