Database Design

Tarasol employs a multi-database strategy with tenant isolation at the database level. The system uses five distinct data stores, each optimized for its specific use case.

Database Technologies

TechnologyPurposeServices
Microsoft SQL ServerPrimary relational databaseMost services
MongoDBDocument storeIdentity, Post Office, Session Manager
RedisCache & session storeAll services
ElasticsearchSearch indexing & loggingSearch, Monitoring
File SystemMedia storageMedia Service

Multi-Tenant Architecture

Multi-Tenant Database Architecture

Loading diagram...

Key Databases

DatabasePurpose
Tarasol.MultiTenancyCentral tenant configuration and provisioning
Tarasol.AdministrationUsers, permissions, organizational hierarchy
Tarasol.[TenantName]Tenant-specific business data (isolated)

Connection Pooling

NameTypeDefaultDescription
maxnumber10Maximum connections per pool
minnumber5Minimum connections per pool
idlenumber10000Idle timeout in milliseconds
acquirenumber30000Acquire timeout in milliseconds

MongoDB Usage

MongoDB is used for services that require flexible document schemas:

  • Identity Service — User accounts, credentials, device tokens
  • Post Office — External mail records with variable metadata
  • Session Manager — Active session tracking with TTL

The ODM layer is Mongoose with schema validation.

Redis Caching Strategy

Redis serves multiple roles across the platform:

Use CaseTTLService
User profiles5 minProfile Service
User preferences10 minProfile Service
Avatar URLs1 hourProfile Service
Session dataVariableGateway, Identity
Tenant config5 minAll services
Token blacklistToken expiryIdentity
Tip

Redis connections are configured via REDIS_HOST and REDIS_PORT environment variables. The default port is 6379.

ORM Layer

ORMDatabaseUsage
SequelizeMSSQLPrimary ORM for all NestJS services
MongooseMongoDBODM for Identity and related services

All Sequelize models use TypeScript decorators for schema definition, with migrations managed per-tenant.