eeCLOUD 3.3.2

dotnet add package eeCLOUD --version 3.3.2
                    
NuGet\Install-Package eeCLOUD -Version 3.3.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="eeCLOUD" Version="3.3.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="eeCLOUD" Version="3.3.2" />
                    
Directory.Packages.props
<PackageReference Include="eeCLOUD" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add eeCLOUD --version 3.3.2
                    
#r "nuget: eeCLOUD, 3.3.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package eeCLOUD@3.3.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=eeCLOUD&version=3.3.2
                    
Install as a Cake Addin
#tool nuget:?package=eeCLOUD&version=3.3.2
                    
Install as a Cake Tool

eeCLOUD

eeCLOUD is a .NET library that provides a high-performance logical storage engine, inspired by the concept of a virtual EEPROM. It is designed to manage large volumes of data in a simple, fast, and scalable way.

eeCLOUD is not a traditional ORM and not a simple key-value store. It introduces an address-based persistence model, built for real-world performance and modern workloads.


🚀 Core Concepts

Memory

A Memory is the logical equivalent of a table. It represents an addressable storage space rather than a rigid schema.

Memory = Virtual EEPROM

MemoryArea

A MemoryArea represents a record inside a Memory. It contains the actual data, stored in JSON format (schema-less).

Address

  • Type: long
  • Primary Key
  • Unique and monotonic
  • Simulates a physical memory address

The address is the true physical identifier of the data.

Index

  • Type: string (commonly a GUID)
  • Unique logical identifier
  • Used for semantic lookups and integrations

ID

  • Type: string
  • Not unique
  • Indexed
  • Useful for grouping and NoSQL-style queries

Reference

  • Type: long
  • Direct reference to the address of another Memory
  • Enables instant relationships without joins

Date vs Create

  • date: logical or business date of the data (event time)
  • create: actual persistence timestamp

date is indexed and commonly used for range queries.


🧩 Cluster Storage

eeCLOUD supports clustered storage to improve scalability and performance.

Cluster Creation (Write)

Clusters are created only during write operations by explicitly enabling clustering:

clusterized: true

When clusterized is enabled:

  • The main Memory table stores only indexes and addresses
  • The actual data is written into a cluster table
  • Cluster tables are created automatically when needed

Example:

orders          -> index-only table
orders§c_0      -> data cluster
orders§c_1      -> data cluster
orders§c_2      -> data cluster

The target cluster is calculated mathematically from the generated address.


Automatic Cluster Resolution (Read)

During read operations, no cluster flag is required.

The read process is fully automatic:

  • eeCLOUD automatically resolves the correct cluster table
  • Data is transparently loaded from the corresponding cluster

This makes clustered storage completely transparent for consumers.


⚙️ Configuration

var config = new Config
{
    server = "192.168.1.10",
    username = "dbuser",
    password = "dbpassword",
    type = ServerType.PostgreSQL,
    clusterSize = 100000
};

server

  • Format: IP or IP:PORT
  • If port is omitted, the default port for the selected engine is used

username / password

Credentials used to connect to the selected backend engine.

  • The user must exist on the backend
  • The user must have privileges to create databases and tables

Security notes:

  • Credentials are used only locally
  • They are never sent to external services
  • eeCLOUD does not connect to proprietary services

clusterSize

Defines the maximum number of records per cluster. Used to calculate the target cluster table from the address.


🗄️ eeCACHE (Important)

eeCACHE is an optional persistent cache engine for eeCLOUD. It is disabled by default.

To enable caching, an implementation of IeeCACHE must be explicitly injected when creating the Application instance.

var cache = new eeCACHE();
var app = new Application(config, cache);

Architecture

eeCACHE uses a dual-layer architecture:

  • In-memory layer

    • Extremely fast
    • Valid only while the process is running
    • Supports expiration (TTL)
  • Persistent layer

    • Stored locally using memory-mapped files
    • Automatically restored on process restart
    • Shared across multiple processes on the same machine

Usage Modes

eeCACHE as primary backend

config.type = ServerType.eeCACHE;
  • eeCACHE acts as the main storage engine
  • No external database is required

eeCACHE with SQL backend

  • The database is the source of truth
  • eeCACHE acts as a read/write accelerator
  • Cache is synchronized from the database on restart

Security

  • No network access
  • No external services
  • No telemetry
  • All data is stored locally

📚 When to Use eeCLOUD

Recommended for:

  • IoT platforms
  • Event logging
  • Session storage
  • Semi-structured data
  • High-throughput systems

Not intended for:

  • Complex SQL joins
  • Traditional relational modeling
  • Heavy analytical reporting

🔧 Supported Backends

  • PostgreSQL
  • MySQL
  • SQL Server
  • eeCACHE
  • FTP (binary storage)


Made with ❤️ by Giovanni Petruzzellis

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
3.3.2 83 1/2/2026
3.2.0 166 11/23/2025
3.1.9 190 10/28/2025
3.1.8 173 10/21/2025
3.1.6 175 10/20/2025
3.1.5 100 10/18/2025
3.1.4 185 10/15/2025
3.1.3 181 10/13/2025
3.1.1 209 9/7/2025
3.1.0 232 9/4/2025
3.0.9 300 8/11/2025
3.0.8 182 7/30/2025
3.0.7 255 6/21/2025
3.0.6 213 5/27/2025
3.0.3 558 3/25/2025
2.0.1 210 2/15/2025
2.0.0 203 11/10/2024
1.9.9.9 180 11/5/2024
1.9.9.8 229 10/13/2024
1.9.9.7 211 9/9/2024
1.9.9.6 188 9/7/2024
1.9.9.5 200 9/7/2024
1.9.9.4 210 6/22/2024
1.9.9.3 208 5/21/2024
1.9.9.1 218 3/25/2024
1.9.7 223 2/1/2024
1.9.6 267 1/6/2024
1.9.5 236 1/1/2024
1.9.4 233 12/16/2023
1.9.3 198 11/13/2023
1.9.2 151 11/12/2023
1.9.1 194 10/13/2023
1.8.1 198 9/29/2023
1.7.9 203 9/14/2023
1.7.3 206 8/18/2023
1.6.2 212 8/14/2023
1.5.6 198 7/31/2023
1.5.5 227 7/31/2023
1.5.4 217 7/27/2023
1.5.3 220 7/26/2023
1.5.2 221 7/19/2023
1.4.1 248 6/13/2023
1.4.0 454 11/9/2022
1.3.4 492 8/26/2022
1.3.3 513 8/23/2022
1.3.2 471 8/17/2022
1.3.1 475 8/17/2022
1.3.0 607 8/17/2022
1.1.5 714 2/11/2022
1.1.3 717 1/27/2022
1.1.2 952 12/31/2020
1.1.1 952 8/25/2020
1.1.0 1,248 7/27/2020
1.0.7 679 6/22/2020

Package Update