Prepare and test your skills

Prepare and test your skills

Designing for security and compliance means ensuring regulated data can be accessed only by approved identities, decrypted only with approved keys, seen only in approved form, and stored only in approved places. The design combines security by design (opens in a new tab) identity controls, envelope encryption, privacy transformation, residency guardrails, and project separation. Data flows from ingestion through engines such as Dataflow and Dataproc to storage and backups, and every stage depends on keys, perimeters, and audit logs.
Identity and Access Management (IAM) for data workloads binds every principal to only the minimum role needed on a specific resource. A principal is a user, group, or service account, a role is a collection of permissions, and access flows from the principal through the role to the dataset, bucket, or project. Organization and project roles control the ability to run jobs or manage projects, while dataset and bucket roles control the ability to read or modify data, and permissions inherit downward unless a lower-level grant narrows them.
Least privilege uses predefined roles such as BigQuery data viewer or editor, custom roles for narrow pipeline needs, and groups instead of individual bindings so membership can change while the binding stays stable. Tables inherit permissions from the containing dataset unless table-level access overrides that inheritance. Designs use separation of duties, policy analysis, and IAM Recommender suggestions, and must respect the soft quota of 100 service accounts per project. Service accounts provide machine identity without long-lived keys: a dedicated account owns exactly one pipeline stage, Dataflow jobs pass a dedicated worker account with --serviceAccount instead of the broad Compute Engine default account, and secure impersonation uses short-lived tokens through Service Account User and Service Account Token Creator. Complementary controls include principal access boundary policies, Privileged Access Manager for just-in-time elevation, firewall deny-by-default rules, and organization policies that disable external IPs, restrict locations, and block key creation.
Conditional access adds where, when, and from what device a request is allowed. IAM Conditions enforce attribute-based control, such as allowing activation only from a trusted Cloud Build trigger, while Identity-Aware Proxy (IAP) adds IP and device checks and Access Context Manager re-evaluates access on every authentication. Session length for Google Cloud services must be set between 1 and 24 hours with a 16-hour default for new customers. VPC Service Controls mitigates exfiltration by placing Google-managed resources inside a security perimeter and controlling movement across it. Sensitive data sits in its own perimeter, ingress rules control what can enter and egress rules control what can leave, and requests from outside the perimeter are blocked even when IAM would allow them. The service is limited to 10,000 projects inside perimeters organization-wide and 100 perimeters including bridges per organization.
Exam tip: Column policies on a base table automatically apply to all of its authorized views, while each subset table must have the column policy applied separately for enforcement to work.
Data security for pipelines protects data from ingestion through processing to storage and backup by combining default encryption, envelope encryption, and explicit transit controls. Envelope encryption separates the key that encrypts data from the key that protects that key. A data encryption key (DEK) directly encrypts each logical chunk of customer content with AES-256, while a key encryption key (KEK) wraps the DEK for storage near the data, and KEKs are stored centrally in Keystore. Data moves in order: first incoming data is broken into chunks with unique identifiers, then each chunk is encrypted with its own DEK, then each DEK is wrapped by a KEK, then access control lists allow only authorized services to decrypt, and finally reading requires both the encrypted chunks and the unwrapped DEKs. If a chunk is updated it gets a new DEK, and chunks are replicated in encrypted form so backups never expose plaintext.
Default encryption at rest encrypts all customer content without customer action using multiple layers. Storage-system encryption uses AES-256 except for a small number of Persistent Disks created before 2015 that use AES-128, and device-level hard disk drives and solid-state drives apply a second AES-256 encryption with a separate key. Google uses a FIPS 140-2 validated module, certificate 4407. Cloud Key Management Service (Cloud KMS) provides customer control when compliance requires more than Google-managed defaults:
| Option | Key control | Choose when |
|---|---|---|
| Default encryption at rest | Google-owned and Google-managed keys | No key-management requirement exists and managed operations are preferred |
| Customer-managed encryption keys (CMEKs) in Cloud KMS with optional Cloud HSM or Cloud External Key Manager (Cloud EKM) | Customer controls generation, storage, rotation, and destruction | Lifecycle must be managed for auditors, FIPS 140-2 Level 3 HSM is required, or key material must stay outside Google Cloud |
| Application-layer tokenization with Sensitive Data Protection | Application team tokenizes highly sensitive fields before persisting | Raw values such as PII must not be usable in storage even by analysts who need the dataset |
Configuring CMEK follows an ordered dependency: first create a key ring near the resources, then grant roles/cloudkms.cryptoKeyEncrypterDecrypter to the service agent, then attach the key at resource creation in the same location, and finally allow requesters to access data through the service without direct key access. If the service-agent role is revoked or the CMEK is disabled or destroyed, data becomes inaccessible, which enables crypto-shredding but can cause permanent loss. Encryption in transit protects traffic outside Google-controlled boundaries. VM-to-VM traffic inside a Virtual Private Cloud (VPC) network is encrypted inside the production network, traffic from the internet terminates at the Google Front End (GFE) for DDoS protection then uses ALTS between services, and hybrid paths use MACsec over Cloud Interconnect and IPsec over Cloud VPN.
Privacy protection for personally identifiable information (PII) uses Sensitive Data Protection to discover, classify, de-identify, and govern sensitive data while keeping it useful for analytics. Sensitive Data Protection includes Cloud Data Loss Prevention (Cloud DLP) as its API and scans structured data with field-based transforms and unstructured data with more than 200 built-in classifiers called infoTypes. The transform is applied during inspection and the de-identified output is written as a new copy, so the source remains unchanged.
Automated detection operates in two complementary modes. Discovery continuously profiles organizations, folders, or projects and generates profiles with sensitivity levels, data risk levels, and free-text scores. Inspection runs as a DlpJob that reads a specific table or bucket by infoTypes and returns findings with names, likelihood, and offsets. Data flows from discovery to inspection in practice: discovery flags a high-risk asset, then inspection confirms precise values before access is restricted. Reversible transforms replace values with tokens that can be de-tokenized with the same token encryption key. Format-preserving encryption preserves length and character set for legacy applications, while deterministic encryption provides stronger authentication when strict formatting is not required. Irreversible options include cryptographic hashing and generalization such as masking, bucketing, date shifting, and replacement, where age 27 becomes 20-30 to preserve distribution while reducing uniqueness.
Granular warehouse controls enforce least privilege inside BigQuery after dataset access is granted. Column-level security hides tagged columns unless the caller holds the Fine-Grained Reader role on the tag, row-level security filters rows by access policy during execution, authorized views share only the view result without source access, and data masking obscures values while returning the row. Policy tags form a hierarchy where 3_Confidential for credit card numbers includes 2_Private and 1_Sensitive, 2_Private for first names includes 1_Sensitive but not 3_Confidential, and 1_Sensitive for credit limit includes neither higher level. Tenant isolation differs by scale and governance: authorized views are limited to 2500 authorized resources per dataset and must share base-table partitioning and region, while subset tables have no such limit and can have their own partitioning and region at extra copy cost.
Enforcing data sovereignty with Organization Policies means using centralized guardrails to allow storage and processing only inside approved countries or regions. The central control is the resource location restriction (constraints/gcp.resourceLocations), which defines an allowedValues list of permitted multi-regions, regions, and zones. When attached to an organization, folder, or project, any request to create a location-based resource outside that list is denied before data can be stored there. Organization policy enforcement flows from the Organization resource down through folders to projects, so one boundary covers every child workload. BigQuery dataset locations are either regional or multi-regional, store copies in two zones, and cannot be changed after creation, so strict workloads must start regional.
Storage topology determines where data at rest lives. A single-region bucket keeps all copies inside one region for strict sovereignty but needs dual-write for recovery, a dual-region bucket stores objects in a customer-chosen pair with asynchronous replication, and a multi-region bucket stores in any data centers in the multi-region for maximum availability with least placement control. Dataflow enforces key residency by supporting only regional Cloud KMS keys that match the job region, so global keys do not work. Project segregation separates trust boundaries: the ingestion project holds untrusted incoming data, the confidential project holds re-identified warehouses with separate CMEK and column controls, the non-confidential project holds de-identified copies for broader use, and the governance project holds keys, taxonomies, catalog metadata, and logging. Multi-environment design applies the same classification and encryption everywhere while varying exposure: production isolates live data with deny-by-default perimeters, while development and testing use minimized, de-identified, or synthetic data and promote the same verified artifact from development through test to production with Artifact Analysis scans and Binary Authorization attestations.
Continue with this study guide: Designing for security and compliance
Designing for reliability and fidelity means turning raw source data into trusted tables with the right transformation service, orchestrating tasks in order, and keeping pipelines correct through retries, failures, and regional outages. Dataform runs SQL transformations inside BigQuery, Dataflow runs Apache Beam code for batch and streaming, and Cloud Data Fusion runs managed integration with reusable plugins. Managed Service for Apache Airflow orchestrates data-driven batch workflows, while Workflows chains HTTP-based services, and validation checks keep data complete, consistent, and correct.
Preparing and cleaning data is the work of turning raw sources into trusted tables and features with validated quality. Large language models accelerate this work by drafting SQL, Python, and quality rules from natural-language intent. Model Garden supplies foundation models, Agent Studio supplies prompt development, and Agent Platform Pipelines orchestrates prompt engineering, filtering, and evaluation. Generated outputs flow from the model through automated checks to human review, and only reviewed outputs flow into production. When GoogleSQL or Dataform calls ML.GENERATE_TEXT, quota-related retryable errors are handled by calling the function iteratively.
Matching the service to cleaning work means choosing where compute runs and how logic is expressed:
| Service | Primary interface | Choose when |
|---|---|---|
| Dataform | SQL in BigQuery | Data is already tabular in BigQuery and cleaning is set-based SQL with scheduled freshness |
| Dataflow | Apache Beam code with templates | Volume is large or unbounded and needs streaming or combined batch plus stream with custom logic |
| Cloud Data Fusion | Integration pipelines with CDAP plugins | Many heterogeneous sources must be connected through managed, reusable integration blocks |
Dataform logic runs directly where warehouse data lives, so large datasets stay in BigQuery. The Dataform service account mediates the flow from source tables to destination tables and depends on BigQuery Data Viewer on sources and BigQuery Data Editor on destinations. Dataflow pipelines read from databases, Pub/Sub, Cloud Storage, or APIs, apply Beam transforms, and write to sinks such as BigQuery, often by cloning a template such as Java Database Connectivity to BigQuery and adding transforms. When real data is insufficient, synthetic data expands coverage in order: first generate synthetic datasets from existing patterns, then augment examples to balance distribution, and finally label and validate before retraining. Centralizing cleaned outputs in Feature Store lets models reuse features, while Knowledge Catalog standardizes definitions and column-level lineage.
Exam tip: Choose Managed Airflow when the workload needs backfills and re-running DAGs for historical intervals; Workflows has no backfill features and fits low-latency service chaining instead.
Choosing between Managed Airflow and Workflows is a decision about latency, scheduling complexity, payload size, and recovery needs. Managed Service for Apache Airflow expresses tasks and dependencies in Python as Directed Acyclic Graph files with declarative dependency resolution, where the scheduler launches each task only after upstream tasks succeed. Workflows expresses steps in YAML or JSON with imperative flow control, where the definition explicitly orders each HTTP call and branch.
| Feature | Workflows | Managed Service for Apache Airflow |
|---|---|---|
| Syntax | YAML or JSON with imperative flow | Python DAG files with declarative dependencies |
| Execution latency | Milliseconds | Seconds between tasks |
| Scaling and billing | Serverless to zero, billed per step | Provisioned capacity, billed on capacity |
| Data processing features | No backfills or DAG re-runs | Supports backfills and re-running DAGs |
Managed Airflow fits recurring ETL and ELT that must wait on Sensors for files or partitions and recover by backfilling missed intervals. Workflows fits event-driven chaining of microservices triggered by API, console, gcloud CLI, or Cloud Scheduler. Data passed through Airflow XCom is limited to 48 KB and variables passed between Workflows steps support up to 512 KB, so bulk data must flow through external storage such as Cloud Storage or BigQuery rather than through the orchestrator. Collecting health signals turns pipeline behavior into time series, charts, and alerts. Cloud Monitoring stores metric data and fires alerting policies, while Cloud Logging stores event logs in buckets for troubleshooting. Dataflow operational logs flow to the _Default bucket, and information about completed jobs is stored for 30 days. Dataflow worker metrics reach Cloud Monitoring only when the worker service account holds roles/monitoring.metricWriter.
Designing idempotent logic keeps pipelines correct when tasks retry. In Apache Beam on Dataflow, the parallel unit is a ParDo transform running user code as a DoFn object, and the service may retry or duplicate DoFn execution without guarantee of invocation count. DoFn code should therefore follow a pure-function model with no hidden state, so retries plus exactly-once processing from the user perspective do not create duplicates. Dead-letter queues isolate bad records so one failure does not stop good data. The error branch routes the failed message, error details, and original payload to a Pub/Sub dead-letter topic or Cloud Storage path. Delivery behavior depends on cause: 5xx errors retry automatically with exponential backoff for a maximum of 15 minutes, 401 and 403 errors need a replacement job with valid credentials, and other 4xx errors need correction before replay.
Disaster recovery and fault tolerance keep data processing running through zone and region failures with minimal manual work. Disaster recovery across regions restores service from backups and replicas, while high availability within a region survives zone loss with synchronous replication. Recovery time objective (RTO) is the maximum acceptable time an application can be offline, from disaster until normal service resumes. Recovery point objective (RPO) is the maximum acceptable time during which data might be lost, from the last recoverable copy until the disaster. RPO translates into backup frequency, so backups every 24 hours can lose almost 24 hours of updates, while RTO translates into how ready infrastructure and data must be before disaster.
Targets tighten with criticality because smaller RTO and RPO need continuous replication and standby capacity. Tier 1 apps such as real-time payments target RTO Zero and RPO Zero for zone and region outages, Tier 2 apps such as regional CRM target 15 minutes for zone and 1 hour for region, and Tier 3 apps such as HR target 1 hour for zone and 12 hours for region. High availability covers zones within one region with synchronous replication and active-active topology for zero or near-zero RTO and RPO. Disaster recovery covers two or more regions and typically uses asynchronous replication with non-zero RTO and RPO unless a managed multi-regional service handles replication. Zonal resources such as Compute Engine virtual machines fail with their zone, regional resources such as regional Persistent Disk survive single-zone loss, and multi-regional resources such as Spanner and multi-region buckets resist zone and region outages.
Cold, warm, and hot patterns trade running footprint for recovery speed. Cold keeps only backups, snapshots, images, and templates at lowest cost with highest RTO and RPO. Warm standby keeps a minimal always-on replica receiving replication at moderate cost with small RTO and RPO. Hot keeps full capacity in two environments with continuous replication at highest cost with minimal RTO and near-zero RPO. A typical automated cold failover runs in order: first create the recovery deployment from templates, then restore the database backup from Cloud Storage, then apply transaction logs, then validate with automated checks, and finally shift traffic by reconfiguring Cloud DNS to the new frontend or load balancer. Managed instance groups delete and recreate failed virtual machines, and monitoring ties detection to action through health checks and restore tests.
Making decisions related to ACID compliance and availability means balancing strict transactional guarantees against performance, cost, and survival during partitions. Synchronous replication writes to multiple zones or regions before acknowledging, which preserves consistency and RPO but increases latency and cost. Asynchronous replication acknowledges locally and transfers changes later, which keeps writes fast during a partition but accepts eventual consistency and potential loss.
| Service | Replication scope | Failover and durability behavior |
|---|---|---|
| Cloud Spanner | Regional with three zonal replicas, or multi-region with two read-write plus witness | Full copy per read-write replica; supports consistent active-active operation |
| Cloud SQL | Regional primary plus standby; optional cross-region replicas | Automatic zonal failover; cross-region replica promotes to primary with RPO close to zero |
| Firestore | Regional multi-zone or multi-region multi-zone | Regional survives zone loss; multi-region withstands region loss without data loss |
| Bigtable | Minimum two clusters in unique zones in one region | Managed sync per zone; traffic fails over within the same instance |
Calculating aggregate availability shows how stack design changes end-to-end uptime. For tiers that must all succeed in sequence, called chained services, aggregate availability is the product of each tier: tier1_availability x tier2_availability x tierN_availability. Four tiers at 99.9% each yield only 99.6%, and aggregate availability is always lower than the least-available tier. For parallel services, availability is 1 - (1 - A) x (1 - B), so two parallel 99% services yield 99.99%. Three nines allows about 86 seconds of downtime per day, while 99% allows about 864 seconds per day. Elimination of single points of failure duplicates every critical tier across zones, uses regional managed instance groups and load balancing with health checks, and uses high-availability database configurations.
Data validation keeps data complete, consistent, and correct from ingestion to training. Cloud Dataflow validates streaming and batch data inside ingestion code, where Python logic checks types, formats, and ranges as each record passes from sources through transforms to sinks. Knowledge Catalog centrally manages quality checks, profiles, lineage, and governance, while BigQuery anomaly detection finds statistical outliers in stored tables. Streaming sees one record or window at a time and excels at containment, while batch sees whole tables and excels at drift and poisoning detection. Enforcement follows an ordered lifecycle: define agreements in BigQuery tables, label assets with Data Catalog tags, link consumer agreements to IAM bindings with row-level and column-level controls, enforce purpose with query labels, and report findings through Pub/Sub with a BigQuery audit trail. Telemetry closes the loop from measures to alerting policies to notification channels to remediation such as quarantining bad partitions or rolling back loads.
Continue with this study guide: Designing for reliability and fidelity
Mapping current and future business requirements to the architecture is the practice of turning business goals, growth forecasts, and limits into a data design that can adopt new services without rework or downtime. A flexible design stores data and runs computation on separate layers that are colocated in the same zone and region for performance. Portability depends on open-source APIs, portable file formats, and standard handover points, while compliance depends on regionalized resources and customer-controlled encryption.
Separation of storage and compute in BigQuery is the foundation that lets a warehouse grow from terabytes to dozens of petabytes without resizing clusters. BigQuery stores data in Colossus, Google's distributed file system, in a compressed columnar format called Capacitor that is queried directly without decompression. Query execution runs on a multilevel tree based on Dremel and is connected by the Jupiter network with 1 petabit per second of bisection bandwidth. Compute is measured in slots, which are units of CPU and RAM managed by Google and allocated by a fair scheduler, with projects limited by default to 2,000 slots.
Because storage is allocated as data is consumed and slots are adjusted per workload, growth is handled by changing slot reservations rather than rebuilding clusters. In contrast, Amazon Redshift ties CPU, memory, and disk together in compute nodes, so growth requires classic resize over hours to days with full data copy or elastic resize in 10 to 15 minutes in read-only mode. Translating objectives into inventory, placement, and cost controls converts latency, residency, availability, and cost goals into choices for ingestion, processing, storage, and access. The work builds inventory, catalogs pipeline properties, trains teams, builds proof of concept, calculates total cost of ownership, and chooses first workloads after filtering for regulatory needs. Placement controls performance because data should be stored in the same zone where it is processed to reduce latency and transfer cost.
Exam tip: A BigQuery multi-region location does not provide cross-region replication or regional redundancy; data is stored in a single region within that geographic area.
Portable Beam pipelines on Cloud Dataflow separate pipeline definition from pipeline execution for batch and streaming. A developer writes the pipeline once with the Apache Beam software development kit (SDK), which defines sources, transforms, and sinks, and then runs that program on the Dataflow managed service for serverless execution. Data flows from source systems through Beam transforms to the destination sink, with temporary files and state artifacts created along the way. If sources, sinks, or temporary files sit outside the job's region, data can move across regions during execution. Portability comes from the Beam runner model, where the same program can run on different runners. A primary pipeline can run on Dataflow while a backup runs on a local Spark cluster using the Apache Spark Runner, so compatibility must be checked in the Beam Capability Matrix. Locality is controlled by three Dataflow parameters that separate control-plane metadata from data-plane compute: the regional endpoint controls where job metadata is stored, while worker region and worker zone control where workers run.
Managed Service for Apache Spark is the fully managed service for running open-source Hadoop, Spark, and Flink jobs without managing a permanent cluster. Instead of operating one monolithic cluster, teams create many short-lived ephemeral clusters, run a job, and delete the cluster when processing completes. Integration depends on two open Hadoop connectors. The Hadoop Cloud Storage Connector lets Spark read input and write output to Cloud Storage, while the Hadoop BigQuery Connector lets Hadoop and Spark write directly to BigQuery through InputFormat and OutputFormat classes. Flexible processing pipelines use fully managed services that can be swapped as needs change. Data flows from Cloud Storage or Pub/Sub handover queues into the processing service and then into BigQuery, so queues or buckets act as the boundary between transactional systems and analytics. Compatibility is preserved with facade views between BigQuery tables and downstream processes, so dashboards first read views over the source schema, then a mix of source and new tables, and finally only evolved tables.
Federated analytics with BigQuery Omni runs BigQuery compute locally to data stored outside Google Cloud. Query traffic flows from BigQuery Omni to Amazon Simple Storage Service (Amazon S3) or Azure Blob Storage, and results return without requiring a full dataset copy into Google Cloud. Teams analyze external data in place when cross-cloud work or residency rules make copying impractical. For Oracle migrations, BigQuery ML replaces separate mining licenses for linear regression, logistic regression, k-means clustering, and TensorFlow imports, plus Vertex AI Workbench and Vertex AI Training for development and large-scale scoring. Secure connectivity controls where ingestion enters Google Cloud through the handover networking pattern, which uses Pub/Sub queues or Cloud Storage buckets as the trust boundary, with gated egress added when results must flow back.
Open file formats preserve schema and performance when data moves between engines and clouds. Apache Avro, Apache Parquet, and Apache Optimized Row Columnar (ORC) embed schema with the data, which reduces complexity compared with comma-separated values (CSV) where schema must be specified at load time. Parquet and ORC are columnar formats commonly used in Cloud Storage data lakes for efficient analytical access. Metadata portability depends on Dataproc Metastore, the managed Hive metastore that stores databases, tables, columns, and partitions for data in Cloud Storage. Cloud Storage holds the columnar files while Dataproc Metastore holds the table definitions that make those files queryable.
Data staging, cataloging, profiling, and discovery is the governed path from raw ingestion to trusted consumption. Knowledge Catalog provides centralized metadata management by ingesting metadata from BigQuery, Cloud Storage, and Pub/Sub into catalog entries, enriching entries with tags, aspects, and glossary terms, and returning only entries the caller is permitted to see through entry-level and tag-level IAM checks. Governed staging moves data through bronze raw ingestion, silver cleansed data, and gold curated aggregations, where the best practice is to use BigQuery for the gold layer. The Lakehouse runtime catalog hosts catalog instances and implements the Apache Iceberg REST Catalog API with Project.Catalog.Namespace.Table naming, credential vending with short-lived tokens, and direct engine-to-Cloud Storage reads after IAM validation. Continuous discovery with Sensitive Data Protection generates profiles with sensitivity and risk levels, and remediation publishes expected data, locks down unexpected data, or triggers deeper inspection.
Continue with this study guide: Designing for flexibility and portability
Analyzing current needs and creating a migration plan is the assessment that connects what stakeholders want to what the current warehouse can do. The work inventories data flows, systems, users, and compatibility, then defines a phased path to a desired state where upstream processes write directly to BigQuery (opens in a new tab) and downstream processes read from BigQuery. Every use case moves through offload before full migration, with validation before legacy tables are deprecated.
Data workflows are directed acyclic graphs (DAGs) that define the ordered path data follows from sources through transformations to sinks. A data flow DAG carries row data from transactional source systems such as a relational database management system (RDBMS) to a sink connected to the warehouse, while an orchestration DAG coordinates movement between pipelines without moving row data itself. Sources typically pull from the source system, so traffic flows from the source system to the source node, then through each transformation in order, then from the sink to the warehouse. Migration planning distinguishes batch pipelines that run on data collected over a period from streaming pipelines that handle real-time events such as change data capture row changes from Online Transaction Processing databases.
Inventorying source systems builds an Existing System snapshot from analyzed logs for a defined time period. The snapshot quantifies compute, storage, applications, and schema objects to expose utilization, waste, and sequencing constraints. Large tables take longer to extract, heavily used tables often have many dependencies, and query histograms reveal low-utilization windows for transfer. Storage hygiene shapes complexity: tables with no observed reads and tables with no updates signal waste that can be omitted. Migration complexity is scored by technical fit: good fit means no issues, fit with effort means resolvable issues, no fit means blockers, and fit unspecified means more data is needed. SQL compatibility refines the estimate through automatic conversion counts, manual effort for functions and procedures, warnings to review, and reserved keywords that must be enclosed in backticks in GoogleSQL.
The migration path for each use case is selected from stakeholder tolerance for change, skills, and limits. When a use case is offloaded, its schema and data move to BigQuery, an incremental copy keeps old and new synchronized, and downstream processes are migrated while upstream pipelines still write to the legacy warehouse. When a use case is fully migrated, which requires offloading first, upstream pipelines ingest directly into BigQuery and legacy tables can be deprecated. Lift and shift preserves existing tooling when it supports BigQuery, while rearchitecting replaces pipelines with Google Cloud services:
| Service | Interface | Workload fit |
|---|---|---|
| Cloud Data Fusion | Managed CDAP with visual interface and plugins | Batch and streaming replication from many sources with Wrangle-based cleaning |
| Dataflow | Code-based serverless processing for Python and Java | Unified batch and streaming with autoscaling, including JDBC to BigQuery extraction |
| Managed Service for Apache Airflow | Workflow orchestration with DAGs and operators | Authoring, scheduling, and monitoring pipelines across cloud and on-premises |
Schema evolution improves the design while writers and readers keep working. Light optimizations recreate tables with partitioning and clustering, then facade views mask underlying tables so views always return the same results. The documented order changes consumers before producers: first transfer the use case as is, then apply light optimizations, then create facade views, then transform downstream processes to read from views, and finally transform upstream processes to write into the new schema.
Planning migration and validation matches source type, volume, bandwidth, and deadline to the service that moves data and proves correctness. Cloud Storage staging is the central pattern, so data flows from the source system to a Cloud Storage bucket and then into BigQuery. Assessment starts with size, usable bandwidth, and time window: even at an ideal 1 Gbps, 1 GB takes eight seconds and 100 TB takes about 12 days before overhead and retries. BigQuery Data Transfer Service (DTS) automates movement of schema and data into BigQuery on a schedule without writing code. A transfer configuration inherits the destination dataset location and stages data in that same location. The service cannot transfer data out of BigQuery, and it is also used for dataset copies and scheduled queries.
The optimal service decision compares source location, data type, and volume:
| Source and need | Suggested service | Key behavior |
|---|---|---|
| Amazon Redshift or Teradata schema plus data | BigQuery Data Transfer Service | Copies schema and data with Cloud Storage staging; supports schedules and backfills |
| Another cloud or bucket-to-bucket copy | Storage Transfer Service | Fully managed automation with scheduling and retry |
| On-premises files with enough bandwidth, small to medium needs | gcloud storage command | Parallel, resumable, encrypted uploads; best for ad hoc and directory sync |
| On-premises NFS at petabyte scale with enough bandwidth | Storage Transfer Service for on-premises data | Agent-parallelized copies with bandwidth caps and audit record |
| On-premises data without enough bandwidth | Transfer Appliance | Offline capture to shipped hardware, then ingestion by Google |
Secure migration networking builds private, high-throughput paths into a Virtual Private Cloud (VPC) before large datasets move. VPCs are global resources, while each subnet is bound to one region and subnets cannot use overlapping IPs. Hybrid pathways carry data with different tradeoffs: Cloud Interconnect uses a dedicated link to a VLAN attachment bound to a specific region, Partner Interconnect flows through a partner location, and Cloud VPN flows across an encrypted tunnel. Cloud Router manages dynamic routing, and keeping source data after cutover preserves rollback. Cost and latency are reduced by storing data in the same zone that processes it and by selecting egress routes deliberately, while VPC Service Controls (opens in a new tab) constrains migrated data within the perimeter during transfer.
Continuous validation keeps source and BigQuery synchronized while proving correctness. When a use case is offloaded, upstream writes still go to the existing warehouse, so an incremental copy must flow to BigQuery. Full migration ends that dependency by ingesting directly into BigQuery. The offload-to-validation sequence runs in order: first migrate schema and data as baseline, then establish incremental copy, then migrate and validate downstream scripts, dashboards, and applications. An ordered warehouse transfer also runs Extract to vendor-neutral Avro, ORC, or Parquet files, then Upload to a Cloud Storage bucket near the dataset location, then Load into BigQuery, then Validate with the Data Validation Tool using count, sum, and average aggregations.
Exam tip: Choose Transfer Appliance when bandwidth cannot meet the deadline — 100 TB takes over 10 days at 1 Gbps and over 100 days at 100 Mbps — while BigQuery Data Transfer Service never moves data out of BigQuery.
Continue with this study guide: Designing data migrations
An offloaded use case keeps upstream writes in the legacy warehouse with an incremental copy to BigQuery while downstream processes are migrated, whereas a fully migrated use case ingests directly into BigQuery and allows legacy tables to be deprecated. Full migration requires offloading first.
Envelope encryption encrypts each chunk of customer content with its own data encryption key using AES-256 and wraps each data encryption key with a key encryption key stored centrally in Cloud Key Management Service (Cloud KMS). If the customer-managed encryption key is disabled or destroyed, the data becomes inaccessible and unreadable.
Aggregate availability for chained tiers that must all succeed in sequence is the product of each tier, so four tiers at 99.9 percent each yield only 99.6 percent. For parallel services availability is one minus the product of the failure probabilities, so two parallel 99 percent services yield 99.99 percent.
Last updated