Source of truth
DataSourceType enum in DataManagementModelsStandard
DatasourceCategory enum for grouping
Categories
| Category | Description | Examples |
RDBMS | Relational database management systems | SqlServer, PostgreSQL, MySQL, Oracle, SQLite |
NOSQL | Non-relational/document stores | MongoDB, Redis, Cassandra, Couchbase |
CLOUD | Cloud-based data services | CosmosDB, WebService, REST APIs |
GRAPH | Graph databases | Neo4j, ArangoDB |
SEARCH | Search and analytics engines | ElasticSearch |
FileBased | File-based data formats | CSV, Excel, JSON, XML, PDF |
MEMORY | In-memory/transient storage | InMemory, InMemoryDB |
RDBMS
| DatasourceType | Driver | Connection String Pattern | Specialized Helper |
SqlServer | Microsoft.Data.SqlClient | Server={Host};Database={Database}; | RdbmsHelper |
Postgresql | Npgsql | Host={Host};Database={Database}; | RdbmsHelper |
MySql | MySqlConnector | Server={Host};Database={Database}; | RdbmsHelper |
Oracle | Oracle.ManagedDataAccess | DATA SOURCE={Host}/{ServiceName}; | RdbmsHelper |
SqlLite | Microsoft.Data.Sqlite | Data Source={FilePath} | RdbmsHelper |
DB2 | IBM.Data.DB2 | Server={Host};Database={Database}; | RdbmsHelper |
Sybase | AdoNetCore.AseClient | Data Source={Host};Port={Port}; | RdbmsHelper |
Firebird | FirebirdSql.Data.FirebirdClient | Database={FilePath}; | RdbmsHelper |
MsAccess | System.Data.OleDb | Provider=Microsoft.ACE.OLEDB; | RdbmsHelper |
Informix | IBM.Data.Informix | Server={Host};Service={Port}; | RdbmsHelper |
Teradata | Teradata.Client | Data Source={Host}; | RdbmsHelper |
Netezza | IBM.Data.Netezza | Server={Host};Database={Database}; | RdbmsHelper |
NoSQL
| DatasourceType | Category | Helper | Features |
MongoDB | NOSQL | MongoDBHelper | Document store, BSON, aggregation pipeline |
Redis | NOSQL | RedisHelper | Key-value, pub/sub, cache, streams |
Cassandra | NOSQL | CassandraHelper | Wide-column, CQL, high availability |
CosmosDB | CLOUD | RdbmsHelper | Multi-model (SQL, MongoDB, Gremlin, Table) |
Couchbase | NOSQL | RdbmsHelper | Document store with N1QL |
File-Based
| DatasourceType | Format | Connection | Helper |
Csv | Comma-separated values | FileConnection | FileHelper |
Excel | XLS/XLSX spreadsheets | FileConnection | FileHelper |
Json | JSON documents | FileConnection | FileHelper |
Xml | XML documents | FileConnection | FileHelper |
Parquet | Columnar storage | FileConnection | FileHelper |
Pdf | PDF documents | FileConnection | FileHelper |
Image | Image files | FileConnection | FileHelper |
Text | Plain text files | FileConnection | FileHelper |
Html | HTML documents | FileConnection | FileHelper |
Cloud & Memory
| DatasourceType | Category | Use Case |
WebService | CLOUD | REST API endpoints via WebAPIDataSource |
Graph | GRAPH | Neo4j, ArangoDB graph traversal |
ElasticSearch | SEARCH | Full-text search and analytics |
InMemory | MEMORY | Transient runtime-only data |
InMemoryDB | MEMORY | In-memory with optional persistence |
DataView | MEMORY | Federated/virtual data views |
Capability Matrix
DataSourceCapabilityMatrix maps each DataSourceType to its supported capabilities, enabling intelligent query generation and graceful degradation.
Core Capabilities
| Capability | SQL Server | PostgreSQL | MySQL | SQLite | MongoDB | Redis | CSV |
SupportsTransactions | Yes | Yes | Yes | Yes | Yes | Yes* | No |
SupportsJoins | Yes | Yes | Yes | Yes | No | No | No |
SupportsAggregations | Yes | Yes | Yes | Yes | Yes | No | No |
SupportsIndexes | Yes | Yes | Yes | Yes | Yes | No | No |
SupportsIdentity | Yes | Yes | Yes | Yes | No | Yes | No |
SupportsBulkOperations | Yes | Yes | Yes | No | Yes | Yes | No |
SupportsFullTextSearch | Yes | Yes | Yes | No | Yes | No | No |
SupportsViews | Yes | Yes | Yes | Yes | No | No | No |
SupportsStoredProcedures | Yes | Yes | Yes | No | No | Yes* | No |
SupportsTTL | No | No | No | No | Yes | Yes | No |
IsSchemaEnforced | Yes | Yes | Yes | Yes | No | No | No |
Vector & Graph Capabilities
| Capability | Purpose | Supported By |
SupportsVectorSearch | Similarity search | Vector DBs, PostgreSQL (pgvector), Elasticsearch |
SupportsEmbeddings | Embedding storage/retrieval | Vector DBs, PostgreSQL, Redis |
SupportsANN | Approximate Nearest Neighbor | Vector DBs (HNSW, IVF) |
SupportsGraphTraversal | Graph traversal | Neo4j, ArangoDB, CosmosDB |
SupportsCypherQuery | Cypher query language | Neo4j |
SupportsGremlinQuery | Gremlin query language | CosmosDB, JanusGraph |
Streaming & Protocol Capabilities
| Capability | Purpose |
SupportsStreaming | Streaming data operations (Kafka, Kinesis) |
SupportsPublishSubscribe | Pub/sub messaging (Redis, Kafka) |
SupportsMessageOrdering | Message ordering guarantees |
SupportsDeadLetterQueue | Failed message routing (Kafka, Azure Service Bus) |
SupportsPushNotifications | Real-time push updates (Redis, Firebase) |
SupportsContinuousQueries | Change data capture / continuous queries |
SupportsAsyncOperations | Async/await pattern support |
SupportsOAuth | OAuth authentication (REST APIs, cloud DBs) |
Capability API
// Get capabilities for a datasource type
var caps = DataSourceCapabilityMatrix.GetCapabilities(DataSourceType.SqlServer);
// String-based check (case-insensitive)
bool canJoin = caps.IsCapable("SupportsJoins"); // true
bool canVector = caps.IsCapable("SupportsVectorSearch"); // false
// Enum-based check (strongly typed)
bool canBulk = caps.IsCapable(CapabilityType.SupportsBulkOperations); // true
// CapabilityType enum: 36 values
// SupportsTransactions, SupportsJoins, SupportsAggregations,
// SupportsIndexes, SupportsIdentity, SupportsBulkOperations,
// SupportsVectorSearch, SupportsGraphTraversal, SupportsStreaming,
// SupportsPushNotifications, SupportsOAuth, ...
Connection Examples
RDBMS
var props = new ConnectionProperties
{
ConnectionName = "MyDB",
DatabaseType = DataSourceType.SqlServer,
Category = DatasourceCategory.RDBMS,
Host = "localhost",
Port = 1433,
Database = "ProductsDB",
UserID = "app_user",
Password = "secret"
};
MongoDB
var props = new ConnectionProperties
{
ConnectionName = "Mongo",
ConnectionString = "mongodb://localhost:27017",
DatabaseType = DataSourceType.MongoDB,
Category = DatasourceCategory.NOSQL,
Database = "ProductCatalog"
};
File-Based
var props = new ConnectionProperties
{
ConnectionName = "CSVData",
ConnectionString = "./data/",
FileName = "export.csv",
DatabaseType = DataSourceType.Csv,
Category = DatasourceCategory.FileBased
};
Web API
var props = new ConnectionProperties
{
ConnectionName = "ExternalAPI",
ConnectionString = "https://api.example.com/v1",
DatabaseType = DataSourceType.WebService,
Category = DatasourceCategory.CLOUD,
Parameters = "Bearer token123"
};