Tuesday, September 22, 2026

Database Selection Guide

 Database Landscape Overview

Modern infrastructure platforms — especially large-scale Linux test automation systems — require careful selection of the right database technology. Choosing incorrectly leads to scalability bottlenecks, operational complexity, and poor query performance. This guide maps each database category to its ideal use case, special features, and trade-offs.

Who This Is ForDatabase architects, platform leads, and customer-specific infrastructure teams evaluating database choices for storing skill files, Avocado/op-test metadata, Bugzilla defects, Jira tasks, CI/CD execution history, and AI-generated testcase mappings.

Master Database Classification Table

DatabaseCategorySQL/NoSQLPrimary StrengthBest For
MariaDBRDBMSSQLMature relational engine, drop-in MySQL replacementSmall/medium deployments, traditional workloads
PostgreSQLRDBMSSQLAdvanced SQL, extensibility, JSONB supportComplex queries, open-source enterprise
EDB PostgresEnterprise PostgreSQLSQLOracle compatibility + enterprise supportOracle migrations, enterprise SQL compliance
CockroachDBDistributed SQL (NewSQL)NewSQLAutomatic sharding, multi-region, cloud-nativeDistributed SQL with resilience & geo-routing
YugabyteDBDistributed SQL (NewSQL)NewSQLPostgreSQL-compatible distributed SQLPostgreSQL at large/distributed scale
MongoDBDocument DBNoSQLFlexible schema, rich document queriesSemi-structured data, rapid iteration
AerospikeKey-Value DBNoSQLSub-millisecond latency, high throughputReal-time analytics, ad-tech, fraud detection
CassandraWide Column DBNoSQLWrite-heavy workloads, massive scaleTime-series, event logging, IoT
RedisIn-Memory Key-ValueNoSQLUltra-fast in-memory store, pub/subCaching, session management, fast cache
GridGainIn-Memory Data GridHybridDistributed in-memory compute + SQL over cacheIn-memory cache layer, distributed computing

2. Database Taxonomy — Architecture Diagram

DATABASE CLASSIFICATION TREE
DatabasesTraditional SQLDistributed SQLNoSQLIn-Memory Data GridMariaDBPostgreSQLEDB PostgresCockroachDBYugabyteDBMongoDBAerospikeCassandraRedisGridGain (Ignite)KEY DISTINCTIONMariaDB = Traditional SQL  |  CockroachDB = Distributed SQL (NewSQL)  |  MongoDB/Aerospike/Cassandra = NoSQLGridGain = In-Memory Data Grid (Hybrid SQL+NoSQL+Compute)  |  Redis = In-Memory Key-Value StoreCockroachDB has horizontal scaling + ACID + SQL — it is NewSQL, not traditional NoSQL

3. Traditional SQL Databases

Traditional SQL databases provide ACID-compliant relational data management with mature ecosystems, familiar query languages, and well-understood operational patterns. Best suited for structured data with defined schemas.

MariaDB

MariaDB — Classic RDBMS

Drop-in MySQL replacement with strong community support. Ideal for small to medium deployments. Familiar SQL interface, mature replication, and low operational overhead. Best choice when simplicity matters.

PostgreSQL

PostgreSQL — Advanced Open Source SQL

Highly extensible with JSONB, full-text search, window functions, CTEs, and advanced indexing. Strong choice for complex query workloads and data-rich platforms. The de-facto open-source enterprise RDBMS.

EDB Postgres

EDB Postgres — Enterprise PostgreSQL

Commercial distribution of PostgreSQL adding Oracle compatibility, 24×7 vendor support, enterprise HA/DR tools, security enhancements, and compliance certifications. The bridge for Oracle-to-PostgreSQL migrations.

EDB vs PostgreSQL — Feature Comparison

FeaturePostgreSQLEDB Postgres
Open Source✓ YesCore is PostgreSQL
SQL Support✓ Yes✓ Yes
Oracle Compatibility~ Limited✓ Strong
Enterprise SupportCommunity only✓ Commercial SLA
HA / DR ToolsCommunity tools (Patroni, pgBackRest)Enterprise tools (EDB Failover Manager)
Security EnhancementsStandardAdvanced audit, encryption
Cost✓ FreeSubscription
When to Choose EDBChoose EDB when you need Oracle migration assistance, enterprise-grade support contracts, compliance certifications (SOC 2, HIPAA), or when your team lacks the internal expertise to operate community PostgreSQL at scale.

4. Distributed SQL (NewSQL) Databases

NewSQL databases combine the scalability characteristics of NoSQL systems with full ACID transactional SQL semantics. They are designed for cloud-native, multi-region, horizontally scaled deployments where traditional RDBMS hits vertical scaling limits.

CockroachDB

CockroachDB — Cloud-Native Distributed SQL

Combines NoSQL-style horizontal scaling with full SQL, ACID transactions, automatic sharding, and multi-region active-active deployment. Inspired by Google Spanner. Resilient to node and zone failures with no manual intervention required.

YugabyteDB

YugabyteDB — PostgreSQL-Compatible Distributed SQL

Highest PostgreSQL wire-protocol compatibility among distributed SQL engines. Supports both YSQL (PostgreSQL API) and YCQL (Cassandra API). Ideal when migrating an existing PostgreSQL application to distributed scale without rewriting queries.

CockroachDB — Key Characteristics

FeatureSupportDetails
Horizontal ScalingAdd nodes without downtime; automatic rebalancing
Distributed ArchitectureShared-nothing; each node is a full peer
Multi-Region DeploymentGeo-partitioning, follower reads, global tables
Automatic ShardingRange-based sharding; no manual partitioning
SQL InterfacePostgreSQL-compatible SQL dialect
ACID TransactionsSerializable isolation by default
JoinsFull JOIN support including distributed joins
Schemas & TablesStandard relational schemas
CockroachDB Is NOT NoSQLDespite having horizontal scaling and distributed architecture (characteristics often associated with NoSQL), CockroachDB is a Distributed SQL (NewSQL) database. It provides full SQL, ACID transactions, JOINs, and relational schemas — making it fundamentally different from MongoDB or Cassandra.

EDB vs CockroachDB vs YugabyteDB — Decision Matrix

FeatureEDB PostgresCockroachDBYugabyteDB
PostgreSQL Compatible✓ Yes~ Partial✓ Very High
Distributed by Default✗ No✓ Yes✓ Yes
Oracle Migration✓ Excellent✗ Limited✗ Limited
Multi-Region Native~ Via extensions✓ Native✓ Native
Traditional Enterprise DB✓ Yes✗ No✗ No
Horizontal Scaling~ Limited✓ Excellent✓ Excellent
ACID Transactions✓ Yes✓ Yes✓ Yes

5. NoSQL Databases

NoSQL databases sacrifice strict relational schema constraints in favour of flexible data models, horizontal scalability, and tunable consistency. Each NoSQL sub-type is optimised for a specific access pattern.

MongoDB

MongoDB — Document Database

Stores data as JSON-like BSON documents. Flexible schema allows rapid iteration. Rich query language with aggregation pipelines. Best for semi-structured data where schema evolves frequently.

Aerospike

Aerospike — High-Performance Key-Value

Designed for sub-millisecond latency at massive throughput. Hybrid memory architecture (RAM + SSD). Data model: Namespace → Set → Key → Bins (JSON-like). Perfect for real-time analytics and fraud detection.

Cassandra

Cassandra — Wide-Column Store

Optimised for write-heavy, time-series, and high-availability workloads. Masterless ring topology ensures no single point of failure. Tunable consistency (AP-focused). Best for large-scale event logging.

Redis

Redis — In-Memory Key-Value Store

Microsecond read/write latency. Supports strings, hashes, lists, sets, sorted sets, streams, and pub/sub. Primarily used as a fast cache, session store, or execution state bus. Persistence is optional.

Aerospike — Deep Dive

Aerospike is a high-performance distributed NoSQL database with a unique hybrid memory architecture that keeps indexes in RAM while storing data on NVMe SSDs — delivering sub-millisecond latency without requiring all data to fit in RAM.

AttributeDetail
Data ModelNamespace → Set → Key → Bins (similar to JSON fields)
LatencySub-millisecond (often <1 ms) for reads and writes
ThroughputMillions of operations per second per node
ScalingHorizontal (add nodes, auto-rebalance)
ConsistencyStrong consistency available (SC mode)
SQL SupportLimited — via connectors and secondary indexes
Ideal Use CasesFraud detection, ad-tech, recommendation engines, session storage, real-time analytics, execution state tracking

Aerospike Data Model vs Traditional SQL

AEROSPIKE RECORD MODEL VS MARIADB/POSTGRESQL ROW
MariaDB / PostgreSQLSQL Query:SELECT * FROM testcase WHERE testcase_id = 100;Table: testcase  |  Row: id=100  |  Columns: name, status, platformSchema is fixed — must define columns before insert
AEROSPIKE — NAMESPACE / SET / KEY / BINS MODEL
Aerospike Record StructureNamespace: testdbSet: testcaseKey: 100Bins (JSON-like fields):name: "kdump_test"status: "PASS"   platform: "P11"Bins are schema-free — different records in the same Set can have different bins

6. In-Memory Data Grid — GridGain

GridGain (built on Apache Ignite) occupies a unique category — it is primarily an In-Memory Data Grid (IMDG) and distributed computing platform, not a traditional database. It sits between the application and the underlying database as a high-speed distributed cache and compute layer.

GridGain / Apache Ignite

GridGain — In-Memory Data Grid

Keeps "hot" data in distributed RAM across a cluster for sub-millisecond access. Supports ANSI SQL queries, JDBC/ODBC, ACID transactions, and key-value APIs. Often deployed as a caching layer in front of MariaDB, PostgreSQL, Oracle, or NoSQL stores.

FeatureGridGain (Apache Ignite)
ArchitectureDistributed In-Memory Data Grid + Compute Grid
SQL Support✓ ANSI SQL, JDBC/ODBC
ACID Transactions✓ Supported
Key-Value API✓ Supported
Data LocationPrimarily RAM; optional persistent store to disk
Typical DeploymentBetween application tier and backend database (cache layer)
IntegrationMariaDB, PostgreSQL, Oracle, NoSQL stores as backing store
Use CasesDistributed caching, in-memory compute, hot data acceleration
GridGain is NOT a replacement for MariaDB or CockroachDBGridGain accelerates access to frequently-read data by keeping it in distributed RAM. It synchronises with an underlying persistent database. Use it as a compute/cache tier, not as your system of record.

7. Layered Database Architecture for Linux Test Platforms

RECOMMENDED LAYERED DATABASE ARCHITECTURE — LINUX TEST INFRASTRUCTURE
Application Tier — CI Automation / AI Test Mapper / Test OrchestrationAvocado Tests · Op-test Jobs · Bugzilla/Jira Sync · AI Testcase Generator · Skill FilesLayer 2 — Cache & Real-time Analytics TierRedis — Fast Cache / StateAerospike — Real-time AnalyticsGridGain — In-Memory ComputeLayer 3 — Persistent Database Tier (System of Record)Small DeploymentMariaDB / PostgreSQLTraditional SQL · Single NodeSkill files, test metadataDistributed SQLCockroachDB / YugabyteDBNewSQL · Geo-distributedCI history, defects, tasksEnterprise SQLEDB PostgresOracle migration · HA/DRRegulated data, complianceDocument / WideMongoDB / CassandraSchema-free docsEvent logs, telemetry 

8. Linux Test Platform — Database Selection by Use Case

For a large-scale Linux Test Infrastructure platform storing skill files, Avocado test metadata, op-test metadata, Bugzilla defects, Jira tasks, CI/CD execution history, and AI-generated testcase mappings — the following mapping applies:

Data TypeRecommended DBCategoryReason
Skill FilesPostgreSQL / EDBSQLStructured metadata, versioning, relational queries
Avocado Test MetadataPostgreSQL / MariaDBSQLSchema is known; relational joins across testcases
Op-test MetadataMariaDB / PostgreSQLSQLSmall/medium scale; traditional RDBMS sufficient
Bugzilla DefectsEDB / PostgreSQLSQLRelational data with complex queries and audit trail
Jira TasksEDB / PostgreSQLSQLStructured project data; reporting and analytics
CI/CD Execution HistoryCockroachDB / YugabyteDBNewSQLHigh volume writes; distributed across regions/sites
AI-Generated Testcase MappingsYugabyteDB / CockroachDBNewSQLPostgreSQL-compatible + scales as AI data grows
Execution State / Real-time CacheAerospike / RedisNoSQLSub-millisecond access; cache running test states
Hot Data AccelerationGridGainIMDGIn-memory compute layer for frequently-queried data

9. Architect Decision Guide

Need Oracle replacement?
EDB Postgres
Need enterprise open-source SQL?
PostgreSQL / EDB
Need small/medium traditional SQL?
MariaDB
Need cloud-native distributed SQL?
CockroachDB
Need PostgreSQL-compatible at scale?
YugabyteDB
Need sub-millisecond real-time data?
Aerospike
Need fast cache / session state?
Redis
Need distributed in-memory compute?
GridGain (Apache Ignite)
Need massive write-heavy time-series?
Cassandra

10. Full Feature Comparison Matrix

FeatureMariaDBPostgreSQLEDBCockroachDBYugabyteDBMongoDBAerospikeCassandraRedisGridGain
SQL Support~~
ACID Transactions~~
Horizontal Scaling~
Multi-Region~~
Sub-ms Latency
Schema Flexibility~~~~
In-Memory Primary~
Oracle Compat.~
Open SourceCore OSSBSL/CCL

✓ = Full support  |  ~ = Partial / via extension  |  ✗ = Not supported natively

11. Quick Mental Model — Memory Trick for Teams

DatabaseOne-Line Mental Model
MariaDBTraditional SQL — reliable workhorse, simple operations
PostgreSQLAdvanced SQL — the most capable open-source RDBMS
EDB PostgresPostgreSQL + Oracle migration + enterprise support contract
CockroachDBDistributed SQL — cockroach survives anything; so does your database
YugabyteDBPostgreSQL that scales horizontally across data centres
MongoDBDocument store — flexible JSON, no rigid schema needed
AerospikeSpeed demon — sub-millisecond, for real-time decisions
CassandraWrite firehose — absorbs millions of events per second
RedisRAM-first — fastest possible cache and state store
GridGainTurbocharger — in-memory layer sitting in front of your real DB

12. Architect Selection Checklist

  • Define whether your workload is OLTP (transactional), OLAP (analytical), or mixed — this determines SQL vs NoSQL vs IMDG
  • Assess current scale (rows/records count, QPS) and projected growth over 3 years
  • Determine if multi-region or geo-distributed deployment is required (forces NewSQL or NoSQL choice)
  • Identify if sub-millisecond latency is required (forces Aerospike or Redis into the stack)
  • Evaluate whether Oracle compatibility or Oracle migration path is needed (forces EDB Postgres)
  • Check if PostgreSQL wire-protocol compatibility is required for existing tooling (YugabyteDB > CockroachDB)
  • Assess team SQL expertise — NoSQL requires different operational skills than RDBMS
  • Review licensing: CockroachDB uses BSL/CCL; confirm compliance with your legal team
  • Plan for dual-layer architecture: persistent DB (MariaDB/CockroachDB/EDB) + cache layer (Redis/Aerospike)
  • Evaluate GridGain only if in-memory distributed compute acceleration is required — not as a primary store
  • For a small/medium test platform: start with PostgreSQL/MariaDB for metadata, add Aerospike/Redis for execution state
  • For large-scale distributed test platforms: upgrade persistent tier to CockroachDB or YugabyteDB as volume grows

13. Database Architecture Block Diagrams

Each diagram below illustrates the internal architecture and data flow of a specific database — from the client application down to persistent storage. Use these as a quick visual reference when evaluating options with your team.

13.1 MariaDB — Traditional Relational Architecture

MARIADB — CLIENT → PARSER → STORAGE ENGINE → DISK
Client ApplicationConnection ManagerThread pool · Auth · SSL/TLSSQL ParserLexer → AST → OptimizerQuery OptimizerCost-based · Execution PlanStorage Engine API (Pluggable)InnoDB (default) · Aria · MyRocks · ColumnStore · Spider (sharding)InnoDB — B+Tree Indexes + Redo/Undo LogRow-level locking · ACID · MVCC · Buffer PoolPhysical Storage — .ibd / .frm FilesLocal disk · NFS · SAN · binlog for replicationSingle server · Primary-Replica replication · Galera Cluster for HA · MariaDB MaxScale for read scaling

13.2 PostgreSQL — Advanced RDBMS Architecture

POSTGRESQL — POSTMASTER → BACKEND PROCESS → SHARED BUFFERS → WAL → DATA FILES
psql / AppPostmasterListener · forks BackendBackend Process1 per connection · Parser · Planner · ExecSystem Catalogpg_class · pg_attribute · statsShared MemoryShared Buffers (cache pages)WAL BuffersLock Table · Proc Array · CLOGData Files — Heap Tables + B-Tree / GiST / BRIN IndexesTOAST for large objects · tablespaces · MVCC dead tuples (VACUUM)WAL — Write-Ahead LogCrash recovery · Streaming replication · Point-in-Time RecoveryKey Differentiators vs MariaDB:JSONB · Full-Text Search · Window Functions · Table Inheritance · Custom Types · Extensions (PostGIS, pg_trgm)

13.3 EDB Postgres — Enterprise PostgreSQL Architecture

EDB POSTGRES — POSTGRESQL CORE + ENTERPRISE ADD-ONS + ORACLE COMPATIBILITY LAYER
Oracle AppPL/SQL · Oracle SQLPostgreSQL AppJDBC · psql · pgAdminOracle Compatibility LayerPL/pgSQL ↔ PL/SQL · ROWNUM · SYS_CONTEXT · DB LinksPostgreSQL Core EngineParser · Planner · Executor · MVCC · WAL · Shared BuffersSame PostgreSQL internals — 100% query compatibilityEDB Enterprise Add-onsEDB Failover Manager (HA) · EDB Backup & Recovery Tool (BART) · Query Advisor · SQL Profiler · Audit Logging · Row-Level SecurityStorage — same as PostgreSQL · Optional: Oracle DB link for migration bridge

13.4 CockroachDB — Distributed SQL Architecture

COCKROACHDB — SQL LAYER → KV LAYER → RAFT CONSENSUS → DISTRIBUTED STORAGE NODES
Client — PostgreSQL Wire ProtocolSQL Layer (runs on every node)Parser · Planner · Optimizer · DistSQL Processor · Schema ManagerTransaction LayerMVCC · Serializable Isolation · TrueTime-inspired HLC timestamps · Distributed Deadlock DetectionKV Distribution LayerAutomatic Range Splitting · Rebalancing · Lease Holder Selection · Gossip ProtocolNode 1 — Raft LeaderRocksDB · Range Replica (Leader)Node 2 — Raft FollowerRocksDB · Range Replica (Follower)Node 3 — Raft FollowerRocksDB · Range Replica (Follower)Each Range (64 MB) = 3 Raft replicas across nodes · Automatic failover if a node dies

13.5 YugabyteDB — Distributed PostgreSQL Architecture

YUGABYTEDB — YSQL/YCQL API → DOCDB STORAGE → RAFT REPLICATION
YSQL APIPostgreSQL wire protocol · Full SQL · ACID · JoinsYCQL APICassandra-compatible CQL · Semi-relationalYB-TServer — Query ProcessingSQL Planner · DistSQL Execution · Transaction Manager · Tablet PeerDocDB — Distributed Storage LayerRocksDB-based tablets · MVCC · Tablet Splitting · Geo-Partitioning · Column-level TTLTablet ReplicaRaft Leader · Node ATablet ReplicaRaft Follower · Node BTablet ReplicaRaft Follower · Node CYB-Master: DDL management · Tablet placement · Leader election · System catalog — runs separately from TServers

13.6 MongoDB — Document Database Architecture

MONGODB — DRIVER → MONGOS → CONFIG SERVERS → SHARDS → WIREDTIGER STORAGE
ApplicationMongoDB Driver (find/insert/aggregate)mongos — Query RouterRoutes queries to correct shard · Scatter-gather · Aggregation mergeConfig Servers (3-node RS)Shard map · Chunk metadata · BalancerShard 1 — Replica SetPrimary + 2 Secondaries · OplogShard 2 — Replica SetPrimary + 2 Secondaries · OplogWiredTiger Storage EngineDocument-level locking · Compression (snappy/zlib) · BSON on disk · Journaling · In-memory cacheData Model:Database → Collection → Document (BSON/JSON) → Fields (dynamic schema — no ALTER TABLE needed)

13.7 Aerospike — High-Performance Key-Value Architecture

AEROSPIKE — CLIENT → SMART CLIENT LAYER → CLUSTER NODES → HYBRID MEMORY (RAM + NVME)
ApplicationAerospike Client (Java/C/Python/Go)Smart Client — Partition Map AwareDirect node routing — no proxy hop · Knows which node owns each partition · Sub-ms round tripNode 1 — owns partitions 0–1365Indexes in RAM (all key hashes)Records on NVMe SSD (data)Namespace → Set → Key → BinsNode 2 — owns partitions 1366–2730Indexes in RAMRecords on NVMe SSDReplication Factor = 2RAM — Primary Index (all namespaces)8 bytes per record key · Entire index always in RAM for O(1) lookupNVMe SSD — Record DataDirect device I/O bypasses OS page cache · Single seek = sub-ms latency4096 logical partitions per namespace · consistent hashing · no hot-spot per node

13.8 Apache Cassandra — Wide-Column Store Architecture

CASSANDRA — DRIVER → COORDINATOR NODE → TOKEN RING → SSTABLE STORAGE
ApplicationCassandra Driver (CQL) · Consistency Level settingCoordinator Node (any node can be coordinator)Receives CQL · Hashes partition key → Token → Routes to replica nodes · Merges responsesNode A — Token Range T1Commit Log · Memtable · SSTable flushGossip protocol · Snitch for rack-awarenessNode B — Token T2Same write pathReplication factor NNode C — Token Range T3Masterless — no single point of failureTunable consistency (ONE/QUORUM/ALL)Write Path per Node1. Write to Commit Log (durable) → 2. Write to Memtable (in RAM) → 3. Flush to SSTable (disk) → 4. CompactionData Model: Keyspace → Table → Partition Key → Clustering Columns → Columns · Optimised for wide-row time-series

13.9 Redis — In-Memory Key-Value Store Architecture

REDIS — SINGLE-THREADED EVENT LOOP → IN-MEMORY DATA STRUCTURES → OPTIONAL PERSISTENCE
App 1App 2App NSingle-Threaded Event Loop (I/O Multiplexing)epoll/kqueue · Non-blocking sockets · Processes one command at a time → no locks neededIn-Memory Data StructuresString → SET key value / GET keyHash → HSET / HGETList → LPUSH / RPOP (queue)Sorted Set → ZADD / ZRANGE (leaderboard)Pub/Sub → PUBLISH / SUBSCRIBEOptional PersistenceRDB Snapshots (point-in-time) · AOF (Append-Only File, log every write) · Both can be enabledRedis Cluster — Horizontal Scaling16384 hash slots split across master nodes · Each master has replica(s) · No mongos/proxy — clients are cluster-awareTypical latency: < 1ms · Throughput: 1M+ ops/sec on commodity hardware · TTL supported on every key

13.10 GridGain / Apache Ignite — In-Memory Data Grid Architecture

GRIDGAIN — APPLICATION → SQL/KEY-VALUE API → DISTRIBUTED MEMORY GRID → BACKEND DB (OPTIONAL PERSISTENCE)
Application / MicroserviceJava / .NET / Python / REST / JDBCAnalytics / BI ToolSQL queries over in-memory dataGridGain API LayerSQL (ANSI) · Key-Value · Compute · Data Streaming · ML/AI Integration · JDBC/ODBCDistributed In-Memory Grid — Partitioned Across NodesNode 1 — RAM PartitionNode 2 — RAM PartitionNode 3 — RAM PartitionNode 4 — RAM PartitionNode N …Native Persistence (optional)On-disk pages survive cluster restart · WAL for durabilityBackend Database (write-through / read-through)MariaDB · PostgreSQL · Oracle · Cassandra · MongoDB · DynamoDBDeployment Pattern:App reads from Grid (μs latency) → Miss? Load from DB, cache in Grid → Write: Grid + DB (write-through) · Hot data stays in RAM

14. References & Further Reading

ResourceURL
MariaDB Documentationmariadb.com/kb/en/
PostgreSQL Documentationpostgresql.org/docs/
EDB Postgres Documentationenterprisedb.com/docs/
CockroachDB Documentationcockroachlabs.com/docs/
YugabyteDB Documentationdocs.yugabyte.com/
MongoDB Documentationmongodb.com/docs/
Aerospike Documentationdocs.aerospike.com/
Apache Cassandra Documentationcassandra.apache.org/doc/
Redis Documentationredis.io/docs/
GridGain / Apache Ignite Documentationignite.apache.org/docs/
Made with IBM Bob