Database Strategy

Database Strategy

Database Strategy: technical blog on Oracle, PostgreSQL, MySQL, data warehouse and project management. Hands-on articles from 30 years of IT consulting.

The difference between a system that works
and one that truly drives business is not luck.

It is deep understanding of execution plans.
It is control over privileges and data security.
It is data modeling aligned with business objectives.
It is performance that holds under growing load.

Databases are the operational core of every modern digital ecosystem.
They support critical processes, enable data-driven decisions and determine operational speed and efficiency.

Inside the Engine is where I analyze what happens under the hood of PostgreSQL, Oracle and MySQL: performance tuning, security, architecture and technical decisions applicable to real-world production systems.

Because in today’s data-driven world, databases are not just software components.
They are strategic assets that influence competitiveness, reliability and sustainable growth.

Latest articles

5 rules I've seen work in project teams that hold
Project Management

5 rules I've seen work in project teams that hold

Project management: 5 rules observed in teams that hold under pressure. Psychological safety, bus factor, outcome vs output, knowledge transfer.

Three data marts, three truths about sales: the bus matrix as common ground
Data Warehouse

Three data marts, three truths about sales: the bus matrix as common ground

Kimball bus matrix to align isolated data marts: conformed dimensions, business processes and comparable sales. Real insurance group case.

Before upgrading MySQL: the numbers the customer actually asks for — and how to find them
MySQL

Before upgrading MySQL: the numbers the customer actually asks for — and how to find them

MySQL 8.0 pre-upgrade assessment: measuring sizes, growth, backup and restore times with information_schema. Real numbers to plan maintenance window.

Oracle from On-Premises to Cloud: Strategy, Planning and Cutover
Oracle

Oracle from On-Premises to Cloud: Strategy, Planning and Cutover

Oracle 19c on-premises to OCI migration: 2 TB with RAC and Data Guard. BYOL licensing, Data Pump, overnight cutover — real chronicle.

pg_stat_statements: the first thing to install on any PostgreSQL
PostgreSQL

pg_stat_statements: the first thing to install on any PostgreSQL

PostgreSQL pg_stat_statements: the first query diagnostics extension to install. Find the three queries consuming 80% of database resources.

mysqldump vs mysqlpump vs mydumper: the backup that keeps you up at night
MySQL

mysqldump vs mysqlpump vs mydumper: the backup that keeps you up at night

MySQL backup tools compared: mysqldump vs mydumper vs mysqlpump on a 60 GB database. Real dump and restore times, parallelism and architectural choice.

DWH Partitioning: When 3 Years of Data Weigh Too Much
Data Warehouse

DWH Partitioning: When 3 Years of Data Weigh Too Much

Range partitioning on an 800-million-row fact table: from 12-minute quarterly queries to 40 seconds. Monthly implementation, exchange and local indexes.

Binary logs in MySQL: what they are, how to manage them, and when you can delete them
MySQL

Binary logs in MySQL: what they are, how to manage them, and when you can delete them

MySQL binary log: management, retention and point-in-time recovery. Real case of a server with disk at 95% and 180 GB of binlogs in six months.

VACUUM and autovacuum: why PostgreSQL needs someone to clean up
PostgreSQL

VACUUM and autovacuum: why PostgreSQL needs someone to clean up

PostgreSQL VACUUM and autovacuum: bloat diagnosis on a 200 GB database, reading pg_stat_user_tables and tuning without disabling anything.

AI Manager and Project Management: when artificial intelligence enters the project
Project Management

AI Manager and Project Management: when artificial intelligence enters the project

AI Manager: the professional role that governs the impact of artificial intelligence on architectures, processes and people. Reflections from 30 years in IT.

Payment at 60-90-120 days: the Italian normality that doesn't exist in Europe
Project Management

Payment at 60-90-120 days: the Italian normality that doesn't exist in Europe

60-90-120 day payment terms in Italian IT consulting: comparison with European rules. DSO, EU directive 2011/7 and strategies for IT freelancers.

Bike vs Car in Rome: the morning that opened my eyes
Project Management

Bike vs Car in Rome: the morning that opened my eyes

Commuting in Rome: electric Brompton vs car. 18 minutes vs 50, €35 of parking saved per day. The sustainable mobility choice from a practical view.

Smart working in IT consulting: the numbers nobody wants to look at
Project Management

Smart working in IT consulting: the numbers nobody wants to look at

Smart working in IT consulting: economic and strategic analysis of remote work. Real numbers, KPIs, presenteeism and productivity compared to in-office.

Oracle on Linux: the kernel parameters nobody configures
Oracle

Oracle on Linux: the kernel parameters nobody configures

Oracle 19c on Linux: kernel tuning for real performance. Huge Pages, THP, swappiness, I/O scheduler, ulimit — before and after numbers.

Galera Cluster with 3 nodes: how I solved a MySQL availability issue
MySQL

Galera Cluster with 3 nodes: how I solved a MySQL availability issue

3-node MySQL Galera Cluster for high availability: synchronous replication, quorum, SST/IST. Full configuration against single point of failure.

Roles and Users in PostgreSQL: Why Everything Is (Only) a ROLE
PostgreSQL

Roles and Users in PostgreSQL: Why Everything Is (Only) a ROLE

PostgreSQL ROLE: users and roles are the same object. Mental model, GRANT, NOINHERIT and how to build a truly maintainable read-only account.

AWR, ASH and the 10 minutes that saved a go-live
Oracle

AWR, ASH and the 10 minutes that saved a go-live

Oracle 19c performance tuning with AWR and ASH: finding a hidden full table scan in a stored procedure in 10 minutes, the eve of a go-live.

When chaos becomes method: AI and GitHub to manage a project nobody wanted to touch
Project Management

When chaos becomes method: AI and GitHub to manage a project nobody wanted to touch

Project management with AI and GitHub: turning a chaotic project into a measurable workflow with issue tracking, code review and artificial intelligence.

Users, Roles and Privileges in Oracle: Why GRANT ALL Is Never the Answer
Oracle

Users, Roles and Privileges in Oracle: Why GRANT ALL Is Never the Answer

Oracle security: redesigning the GRANT model with custom roles and Unified Audit, applying least privilege. Real case with copy-paste SQL.

Standup meetings: why they only work if they last 15 minutes
Project Management

Standup meetings: why they only work if they last 15 minutes

Scrum standup meetings: why only the 15-minute constraint makes them work. Timeboxing, parking lot and daily meeting rules that hold up over time.

Ragged hierarchies: when the client has no parent and the group has no grandparent
Data Warehouse

Ragged hierarchies: when the client has no parent and the group has no grandparent

Ragged hierarchy in the data warehouse: balancing unbalanced trees with the self-parenting technique. Correct drill-down on customers and groups.

The Yes-And technique: how I defused a meeting that was about to blow up
Project Management

The Yes-And technique: how I defused a meeting that was about to blow up

The Yes-And technique from improvisational theatre applied to conflict management in IT teams. Real case of a meeting that was about to blow up.

MySQL Users: Why 'mario' and 'mario'@'localhost' Are Not the Same Person
MySQL

MySQL Users: Why 'mario' and 'mario'@'localhost' Are Not the Same Person

MySQL users and hosts: 'mario' and 'mario'@'localhost' are different entities. MySQL/MariaDB authentication model, common mistakes and correct GRANTs.

When a LIKE '%value%' Slows Everything Down: A Real PostgreSQL Optimization Case
PostgreSQL

When a LIKE '%value%' Slows Everything Down: A Real PostgreSQL Optimization Case

PostgreSQL optimization: LIKE '%value%' causes full scan. Using pg_trgm and GIN index to turn a wildcard search into a fast lookup. Real case.

4 million euros, two multinationals, zero software: the true story of a failure foretold
Project Management

4 million euros, two multinationals, zero software: the true story of a failure foretold

Real project management case: insurance client spends 4 million euros on IT consulting and gets zero working software. Vendor lock-in lessons.

Oracle Partitioning: when 2 billion rows no longer fit in a query
Oracle

Oracle Partitioning: when 2 billion rows no longer fit in a query

Oracle Partitioning on a 2-billion-row table: range, interval, partition pruning, local indexes. From hours to seconds on reporting queries.

From Single Instance to Data Guard: The Day the CEO Understood DR
Oracle

From Single Instance to Data Guard: The Day the CEO Understood DR

Oracle Data Guard 19c: migration from single instance after a 6-hour outage. DR architecture, primary/standby, automatic switchover.

SCD Type 2: the history the business didn't know it needed
Data Warehouse

SCD Type 2: the history the business didn't know it needed

SCD Type 2 in the data warehouse: historicising dimensions with surrogate keys and validity dates. Real case: a customer dimension that evolves over time.

MySQL Multi-Instance: A Ticket, a CSV and the secure-file-priv Wall
MySQL

MySQL Multi-Instance: A Ticket, a CSV and the secure-file-priv Wall

MySQL multi-instance on Linux: exporting a CSV with INTO OUTFILE blocked by secure-file-priv. Unix socket connection and shell workaround real case.

EXPLAIN ANALYZE is not enough: how to actually read a PostgreSQL execution plan
PostgreSQL

EXPLAIN ANALYZE is not enough: how to actually read a PostgreSQL execution plan

PostgreSQL EXPLAIN ANALYZE: reading an execution plan, spotting costly nested loops and stale statistics. Real case on 2-million-row table.

Wrong grain: when the fact table can't answer the right questions
Data Warehouse

Wrong grain: when the fact table can't answer the right questions

Data warehouse: fact table grain determines which questions you can answer. Common mistakes in granularity and their impact on the dimensional model.

Full disk on a MySQL cluster: binary logs, Group Replication, and a migration that leaves no room for mistakes
MySQL

Full disk on a MySQL cluster: binary logs, Group Replication, and a migration that leaves no room for mistakes

3-node MySQL Group Replication: migrating binary logs to a dedicated volume without losing quorum. Real case with filesystem at 92%.