Storage
🎒 Almacenamiento¶
Tipos de Almacenamiento¶
- Block storage
- Is the traditional storage type for Vm - netapp
- Stores chunk of raw data linearly in constant size blocks
-
Solución en GCP = Persistent disk, SSD Local
-
Object storage
- Permite almacenar y recuperar cualquier cantidad de datos en todo el mundo y en cualquier momento - docs
- Vincula un enlace (por ejemplo, una URL) a un objeto específico sin jerarquia - reddit
-
Solución en GCP = GCS
-
Cache
- Los datos se almacenan en memoria de rápido acceso. Los datos son borrados con el reinicio de la MV (si no se almacenan en otro lugar diferente), pueden sufrir invalidación de caché
- Soluciones en GCP = RAM - SSD Local - Memorystore
Servicios de Almacenamieno de GCP¶
Cloud Datastore / Firestore¶
- Base de datos documental NoSQL altamente escalable, transaccional, terabytes+
- ⭐ Firestore ****es la nueva versión de Datastore
- Acelera el desarrollo de aplicaciones moviles, web e IoT con conectividad directa a la base de datos - doc
- ⭐ Datastore usa el lenguaje GQL - doc
- CLI
# Para exportar todos los tipos en el namespace ejemploNs del proyecto exampleProject al bucket exampleBucket
gcloud datastore export gs://exampleBucket --namespaces='exampleNs' --project='exampleProject'
Filestore - doc¶
- Sistema de Archivos en Red (NFS) Gestionado - docs
- Permite a un computador cliente acceder a archivos sobre una red casi como si se estuviera acceciendo desde un almacenamiento local - wiki
- ⭐ Filestore vs GCS
- “(filestore) ofrece almacenmaiento de archivos de alto rendimiento a aplicaciones que se estén ejecutando en instancias Compute Engine y Kubernetes Engine” - stackoverflow
Memorystore - doc¶
- Basicamente, es un servicio redis gestionado.
- Reduce la latencia con un servicio en memoria escalable, seguro y con alta disponibilidad para Redis y Memcached.
- 100% compatible Redis y Memcached de código abierto
- ⭐ Tamaño máximo: 300 GB - doc
- CLI - doc
# Crea una instancia Memorystore para Redis:
gcloud redis instances create myinstance --size=2 --region=us-central1 \
--redis-version=redis_5_0
BigTable¶
- Es un servicio de base de datos NoSQL escalable y completamente administrado para grandes cargas de trabajo de estadísticas y operaciones con una disponibilidad de hasta el 99.999%
- baja latencia, no transaccional, almacenamiento de columna ancha, sin consultas tipo SQL, expone la API de Apache HBase, petabytes+
- Estructura
- Instancia - doc
- Una instancia de Cloud Bigtable es un contenedor para hasta cuatro clústeres de Bigtable.
- Las instancias puede tener uno o mas clústeres, localizados en diferentes zonas
- Clústeres - doc
- Servicio Bigtable service en un lugar especifico
- Nodos - doc
- Recursos de computo que Bigtable utiliza
- Cada clúster de una instancia tiene 1 o más nodos
- CLI - docs
{% gist beaa435c8fda42d2991f10dca7dd5952 %}
Cloud Storage (gcs)¶
- Los Objetos son inmutables, versionado de objetos, petabytes+
- Tipo de acceso: Uniforme (recomendado), granular (usa ACL obsoletas) - doc
- GCS - Buenas Práticas - doc
- Uso compartido y colaboración - doc
- ⭐ URLs Firmadas
- Es una URL que proporciona permisos y tiempo limitados para realizar una solicitud - doc
- “permitiendo a los usuarios sin credenciales a realizar una tarea específica en un recurso”
- Cada URL Firmada esta asociada a una Cuenta de Servicio
-
La petición mas común para URLs Firmadas son las de subir y descargar objetos
-
Clases de Almacenamiento - doc
-
Opciones Cold:
- Nearline Storage: lectura o modificación en promedio 30 días o menos
- Coldline Storage: lectura o modificación una vez cada 90 días
- Archive Storage: una lectura o modificación en 365 días
-
⭐ Cambiar clase de Almacenamiento
- Nota: es un proceso de reescritura, no se puede cambiar la clase de almacenamiento original del bucket
- ⭐ Nota: se utiliza para esto el comando gsutil, no gcloud
- El comando gsutil solo puede ser utilizado para Cloud Storage. - stackoverflow
# Reescribe un objeto origen a un objeto desitno .
gsutil -m rewrite -s coldline gs://bucket/**
# Crea un bucket
gsutil mb gs://NOMBRE_BUCKET
- Localización
- Región: Baja latencia dentro de una sola región
- Multi-región: Alta disponibilidad a través de una mayor área
- Regiones-Duales: Alta disponibilidad y baja latencia a través de 2 regiones
-
⭐ No hay una manera única de mover objetos desde Región a Multi-Región - stackoverflow
-
⭐ Versionado
- Cuando se usa versionado, la última versión del objeto es llamado objeto "vivo" - doc
Cloud SQL¶
- Base de Datos Relacional SQL, transaccional, servicio de réplicas, terabyte+
- MySQL, PostgreSQL, y (MS) SQL Server
- ⭐ CLI
# Actualizar la configuración de una instancia Cloud SQL
gcloud sql instances patch [NAME] [--backup-start-time] [--backup-location]
# Comandos para trabajar con respaldos de las instancias Cloud SQL
gcloud sql backups [create/delete/describe/list/restore]
Cloud Spanner¶
- Base de Datos Relacional SQL, escalado horizontal, petabytes+
BigQuery¶
- Datalake almacenamiento de datos (OLAP), análisis de datos
- CLI
# Importar datos a bq
bq load --autodetect --source_format=FORMAT DATASET.TABLE PATH_TO_SOURCE