EAV Model Storage for .NET (C#) Entity Attribute Value Model
features EAV model engine for SQL databases
- Two implentations of data schema provider:
- metadata DB tables
- RDFS/OWL-compatible in-memory schema (may be persisted as EAV objects). The following concepts are supported: Class, ObjectProperty, DatatypeProperty, Object (Individual), domain, datatype (core types + date/datetime), cardinality restrictions
- DB-agnostic: EAV engine can use any ADO.NET-compatible RDBMS supported by NI.Data (MSSQL, MySQL, ODBC/OleDb, SQLite etc)
- Derived (computable at SQL level) propeties support (for example, year/month/quarter for date properties)
- provides complete NI.Data.IDalc implementation for accessing and updating dynamic objects like usual ADO.NET DataTable and DataRow
- Extended relex syntax for loading properties of related objects in one query (automatic intelligent joins). Queries may be composed by end-user with js condition builder.
- WCF-based API (REST, SOAP/WS) for querying and manipulating DB records stored as EAV
- REST API (WCF) was specially optimized for JSON serialization of large datasets (up to 500k rows)
- Optimized for querying millions of business objects
links
NuGet Package | NI.Data.Storage |
Source code | NI.Data.Storage on GitHub |
.NET API Documentation | API Reference |
REST Service Demo Pack | Download |
EAV Storage is a free component (LGPL) and can be used in commercial projects without any restrictions.
how it works
The core idea of Semantic Storage is combining SQL DB benefits with the schema flexibility of NoSQL and semantic capabilities of tripplestore (Graph DB): triplets are stored in a SQL database as EAV and at the same time objects could be accessed like usual DB tables (query, insert, update, delete) by .NET application or API client.
The key advantage of NI.Data.Storage (and significant difference from specialized tripplestores) is the ability to combine traditional relational tables and entity-attribute-value (triplet-based) representation in one common SQL database. It is possible to switch between these data presentation forms and if the application uses NI.Data for accessing database (all NReco Framework-based applications) this may be absolutely transparently for UI and business logic layers.
Semantic storage can be used in the following cases (but not limited to):
- applications with user-defined custom fields, lookups, business objects, relationships (for example: dynamic products catalog, customizable SaaS products, extensible knowledge bases)
- business applications where data domain is dynamically-defined with a lot of concepts and relations
- data marts/business intelligence/reporting applications that need flexible data schema configuration and normalized data representation
EAV Storage integration services?
EAV Storage Commercial Support Request
If you're interested in refined version for .NET Core / WebAPI please let us know:
EAV Storage .NET Core Version Request