Database administration focuses on keeping database systems available, secure, recoverable and performing well. Administrators manage installation, configuration, user access, backups, patching, capacity and tuning for operational and analytical databases. Data engineering focuses on moving and shaping data, designing pipelines that extract data from sources, transform it and load it into stores where analysts and applications can use it. The two roles overlap heavily in practice, since both depend on reliable storage and schemas. A useful way to see the difference is that administrators keep the platform healthy, while engineers build the flows that carry meaningful data through that platform to its consumers.
Relational data modeling defines entities, attributes, relationships and keys before tables are created. A well-designed model reduces redundancy, enforces integrity through primary and foreign keys, and makes queries more predictable. Errors made at the modeling stage are expensive later, because changing a core table often requires migrating large volumes of data and updating every application and report that depends on it. Normalization to third normal form is a common target for transactional systems, while analytical systems may intentionally denormalize into star schemas to speed reporting. Choosing the right balance depends on the workload, so modeling should begin with the questions the business needs answered.
An index is a separate structure, often a B-tree, that lets the database locate rows matching a condition without scanning an entire table. Indexes can greatly reduce response time for selective lookups and joins. However, every index consumes storage and must be updated whenever indexed columns change, which slows inserts, updates and deletes. Over-indexing a write-heavy table can therefore harm overall throughput. Administrators typically examine query execution plans, identify slow queries that scan large tables, and add indexes that serve the most important workloads. They also remove unused indexes periodically, since these add cost without benefit.
A recovery plan should define the recovery point objective, which is the maximum acceptable data loss measured in time, and the recovery time objective, which is how long the service may be unavailable. These targets determine backup frequency, retention and the mix of full, differential and transaction log backups. A plan must also describe where backups are stored, how they are encrypted, and who may restore them. Administrators should test restores regularly, because a backup that has never been restored is an assumption rather than a safeguard. A realistic example is restoring a database to a point just before an erroneous bulk update, which requires transaction logs as well as full backups.
Batch processing collects data over a period and processes it in scheduled runs, while streaming processes records continuously as they arrive. Batch is usually simpler, cheaper and easier to debug, and it suits reporting that is updated hourly or daily, such as financial closes. Streaming is justified when decisions depend on minutes or seconds, such as fraud detection, inventory alerts or operational dashboards. Engineers should not choose streaming merely because it sounds modern, since it adds complexity around ordering, late-arriving events and state management. A pragmatic team often starts with batch and moves only the specific use cases that truly need low latency to a streaming design.
6
Extract, transform, load design
What design principles make extract, transform and load pipelines reliable when source systems change or fail?
Reliable pipelines are designed to be idempotent, meaning that rerunning a job produces the same result without duplicating records. Engineers achieve this with merge or upsert logic, watermarks that track processed data, and staging tables that isolate partial loads. Pipelines should validate data at each stage, fail loudly when assumptions break, and log row counts and durations for later investigation. Schema changes in source systems are a common cause of silent failure, so teams often use schema contracts and alerts when fields disappear or change type. Clear separation between extraction, transformation and loading makes each stage easier to test and to rerun without starting over.
Common data quality dimensions include completeness, accuracy, consistency, timeliness, validity and uniqueness. Completeness asks whether required values are present, accuracy whether they reflect reality, and consistency whether the same fact agrees across systems. Timeliness matters because stale data can mislead decisions even when it is correct. Validity checks whether values fall within allowed formats or ranges, and uniqueness detects duplicate records that inflate totals. Engineers usually express these as automated tests, such as confirming that no order lacks a customer identifier. Measuring quality makes problems visible early, so analysts do not build reports on data that quietly undercounts revenue or double-counts customers.
Master data management establishes authoritative versions of key entities such as customers, products and suppliers that many systems share. When the same customer appears in a sales system, a billing system and a support tool with slightly different names or addresses, matching rules determine whether these records refer to one real entity. Deduplication merges them using deterministic keys where available and probabilistic matching on names, addresses or tax identifiers otherwise. Engineers must decide which source wins for each attribute and keep an audit trail of changes. Without this discipline, one customer can receive duplicate invoices or appear as several accounts in churn analysis, undermining trust in every downstream report.
9
Data warehouse architecture
How do data warehouses, data lakes and lakehouses differ, and how should an organization choose among them?
A data warehouse stores structured, curated data in a schema optimized for analytical queries and business intelligence. A data lake stores large volumes of raw data in its original format, often in cheap object storage, and supports flexible exploration but can become disorganized without governance. A lakehouse attempts to combine these strengths by adding table formats, transactions and indexing to lake storage. The right choice depends on data variety, query patterns, governance requirements and team skills. A common pattern is to land raw data in a lake, transform it into curated tables and serve reporting from a warehouse layer. Organizations should avoid selecting a platform for its marketing alone and should test it against their actual workloads.
A star schema places measurable events in a central fact table, such as sales transactions with quantities and amounts, surrounded by dimension tables describing context such as date, product, store and customer. Each fact row references dimension keys, which makes the model easy for analysts to understand and for query engines to optimize. Dimensional modeling trades some redundancy for simplicity and speed, since many reporting queries join a fact table to a few dimensions and aggregate. Slowly changing dimensions track how attributes like a customer's region change over time. Teams choose this approach when stable, repeatable reporting matters more than flexible transactional updates.
Least privilege means that each user, role or service account receives only the permissions required for its task. Administrators implement this with role-based access control, grouping permissions into roles such as analyst or loader and assigning users to those roles rather than granting privileges individually. Application accounts should not hold administrative rights, and read-only access suffices for most reporting tools. Privileged accounts should be used sparingly, reviewed regularly and protected with strong authentication. Periodic access reviews remove permissions that are no longer needed when people change roles or leave. For example, an analyst who needs only sales data should not be able to read payroll tables, even if both reside in the same database.
Encryption at rest protects stored data, including files, backups and database storage, so that someone who obtains the physical media cannot read it without keys. Encryption in transit protects data moving across networks using protocols such as TLS. These controls are essential for regulated information, but they do not stop an authorized user or an attacker holding valid credentials from querying data. Key management is therefore critical: keys should be stored separately from the data they protect, rotated on a schedule and access-controlled. Practitioners should also understand that encryption does not replace classification, masking or access policy, which determine who is allowed to see values in the first place.
Data minimization means collecting and retaining only the personal information needed for a stated purpose. In database work, this translates into dropping unneeded columns, limiting retention periods and avoiding copies of production data where they are not necessary. Masking replaces sensitive values with realistic but fictitious ones, or with hashed or tokenized equivalents, so that developers and testers can work with data that behaves like production without exposing individuals. Pseudonymization allows linkage across datasets while hiding direct identifiers. These practices matter because development databases are often less secured than production, and a copied table of customer records can become a significant breach if left unprotected. Legal obligations vary by jurisdiction, so teams should consult their privacy office.
Metadata describes data: its definitions, owners, sources, sensitivity classifications, freshness and lineage. A data catalog collects this information so that people can discover trustworthy datasets and understand what they mean. Governance uses metadata to assign accountability, enforce policies such as restricting personal data, and show regulators or auditors how information flows. Lineage, which traces a value from source to report, is particularly valuable when a figure appears wrong, because engineers can see every transformation that touched it. Without a catalog, organizations often end up with several conflicting definitions of revenue or active customer. Good governance is therefore less about bureaucracy than about making shared meaning visible and maintained.
Administrators typically monitor query latency, throughput, lock contention, connection counts, CPU and memory utilization, storage growth and replication lag. Latency and throughput indicate user experience, while lock waits and blocked sessions reveal concurrency bottlenecks in transactional systems. Replication lag matters for read replicas, since reports served from a lagging replica may show outdated figures. Storage growth trends help forecast when capacity will be exhausted. Effective monitoring combines these metrics with thresholds and alerts tied to service objectives, so that the team is notified about meaningful deviations rather than overwhelmed by noise. Dashboards are useful, but the most valuable habit is reviewing trends weekly, which reveals gradual degradation before it becomes an outage.
Schema changes are risky because applications, reports and pipelines often assume a particular table structure. Safe practice treats schema changes as versioned migrations stored in source control, reviewed by peers and tested in a staging environment that resembles production. Expand-and-contract patterns are common: teams first add new columns or tables while keeping the old ones, migrate applications and data gradually, and remove obsolete structures only after all consumers have switched. Large changes should be scheduled with rollback plans, and long-running operations such as adding indexes may need to run during low-traffic windows. This discipline prevents the common failure in which a seemingly minor column rename silently breaks several dashboards and nightly jobs.
Data pipelines benefit from several layers of testing. Unit tests check individual transformation functions with small, known inputs. Integration tests run a pipeline against a sample dataset and confirm that outputs match expected values. Data tests assert properties of the produced tables, such as that primary keys are unique, totals reconcile with source systems and required fields are not null. Regression tests compare new outputs with previous trusted outputs to detect unintended changes. Engineers should also test edge cases such as late-arriving records, empty inputs and duplicated files. Automated testing within continuous integration helps catch defects before deployment, which is far less costly than discovering a wrong financial report after executives have already relied on it.
Moving to a managed cloud database shifts some operational tasks, such as hardware maintenance and certain patching, to the provider, but it does not remove the administrator's responsibility for design, security configuration, access control, performance tuning and recovery testing. Teams must evaluate compatibility of features and extensions, network latency to dependent applications, data residency requirements and the cost model, which can vary with storage, compute and data transfer. Migration typically involves schema conversion, data transfer, validation of row counts and checksums, and a cutover plan with fallback options. Testing performance on realistic workloads before cutover is essential, because an architecture tuned for local storage may behave differently under a managed service's resource limits.
Capacity planning starts with understanding growth rates for data volume, query load and user counts, using historical monitoring data rather than guesses. Administrators estimate future needs for storage and compute, then compare options such as vertical scaling, horizontal partitioning and read replicas. Cost control includes archiving or compressing cold data, choosing storage tiers appropriate to access frequency, and scheduling expensive jobs during off-peak periods when pricing or contention allows. Unused indexes, duplicate tables and abandoned development copies are common sources of waste that a periodic review can identify. A useful practice is to attach ownership and cost tags to each database, so that teams see the expense of the data they create and retain.
Partitioning divides a large table into smaller physical segments, usually by a key such as date or region. Queries that filter on the partition key can scan only relevant segments, which improves performance, and old partitions can be removed quickly without expensive deletes. Partitioning also simplifies archiving and parallel maintenance. The risks include poorly chosen keys that cause uneven partition sizes or queries that cannot benefit from pruning, and added complexity in schema management and constraints. Teams should partition when tables are very large and queries or retention policies align naturally with the chosen key. Testing with realistic queries is necessary, because partitioning that helps one workload can hinder another.