SELECT DISTINCT en Postgres no escala y cómo resolverlo

La cláusula SELECT DISTINCT en PostgreSQL presenta un comportamiento de rendimiento contraintuitivo: su complejidad de ejecución escala con el tamaño total de la tabla, no con el número de valores únicos. Esto significa que, independientemente de las índices utilizados, la consulta escanea cada fila

SQLBraid: toolkit de TypeScript para mantener SQL nativo

SQLBraid es un kit de herramientas de acceso a datos orientado a TypeScript que permite a los desarrolladores escribir consultas SQL estándar sin necesidad de capas de traducción de constructores de consultas. Su objetivo principal es mantener el código SQL visible y legible, eliminando la abstracci

Consejos técnicos pequeños que mejoran la productividad de ingeniería

La productividad en ingeniería de software a menudo depende de pequeños detalles de conocimiento que no requieren una infraestructura mental compleja. Este artículo técnico presenta una colección de trucos prácticos y de alto impacto para optimizar el flujo de trabajo diario. Entre las recomendacion

Un proyecto rescata phpBB 1.4.4 y lo ejecuta en Docker

Un desarrollador ha logrado que phpBB 1.4.4, el último lanzamiento de este software de foros antes de su salto a la fama, vuelva a funcionar casi un cuarto de siglo después de su estreno en 2001. La versión, pensada para PHP 3, Apache y un entorno en el que se confiaba en los datos del usuario, requ

Errores de replicación en MySQL al añadir columnas AUTO_INCREMENT

La actualización de bases de datos MySQL puede generar inconsistencias silenciosas si no se consideran las implicaciones de la replicación con columnas AUTO_INCREMENT. Un caso documentado muestra cómo una migración aparentemente segura resultó en referencias cruzadas incorrectas tras el cambio a una

Objetos duraderos sin Cloudflare, sobre la base de datos que ya ejecutas

Objetos duraderos sin Cloudflare: el modelo actor que ya puede vivir en tu base de datos Lucas Carlson, veterano desarrollador con dos décadas construyendo aplicaciones en Rails y Node, presentó esta semana Solid Objects, una biblioteca open source que recrea el modelo de los Durable Objects de Clo

CDC de MySQL a BigQuery: guía práctica con binlog

La captura de datos modificados (CDC) basada en el registro binario (binlog) de MySQL soluciona las carencias de los sincronizadores periódicos: elimina puntos ciegos en borrados y actualizaciones intermedias, y reduce la carga sobre la base de datos de producción. Un job programado con SELECT solo

Cómo Shopify sustituyó Redis por MySQL en las reservas de inventario

Shopify ha sustituido Redis por MySQL como base del sistema que reserva inventario durante el proceso de pago, un cambio motivado por la necesidad de unificar su infraestructura de datos y mantener garantías ACID entre la reserva temporal y el descuento definitivo cuando el pago se confirma. El prob

Por qué más paralelismo puede ralentizar las bases de datos

PlanetScale documenta una caída de producción de dieciséis minutos sufrida por una base de datos MySQL para explicar por qué aumentar la concurrencia puede reducir el rendimiento en lugar de mejorarlo. El incidente lo provocó un trabajo por lotes que abrió una transacción sobre una tabla activa y re

Cómo hacer que 768 servidores de bases de datos funcionen como uno solo

PlanetScale explica en un artículo técnico cómo escalar una base de datos relacional más allá de unos pocos terabytes mediante particionado (sharding), una técnica que distribuye los datos y las consultas entre múltiples servidores. El texto parte de una arquitectura clásica con un servidor de aplic

freno: el servicio de limitación de escritura de GitHub para clústeres MySQL

freno es un servicio cooperativo y de alta disponibilidad desarrollado por GitHub Engineering para regular las escrituras en recursos compartidos. Su función principal es impedir que las aplicaciones saturen clústeres de MySQL cuando la latencia de replicación supera un umbral definido, evitando así

Particionado de tablas que no exige vigilancia constante

Particionar una tabla por una columna como created_at parece una decisión de almacenamiento inocua, pero termina filtrándose hacia el código de aplicación y las consultas. El artículo explica por qué ocurre esto y propone un diseño que elimina la fuga. El problema central es doble. Primero, las bas

Monastery revela diferencias clave en MySQL y MariaDB

Este artículo explora una discrepancia crucial en la comprensión y aplicación de los niveles de aislamiento de transacciones en bases de datos MySQL y MariaDB, y presenta una nueva herramienta, Monastery, para investigar este problema. El problema central radica en la ambigüedad inherente a la defin

Empresa turca reduce costos al cambiar de proveedor de servidores

Una empresa de software con sede en Turquía logró ahorrar significativos costos de infraestructura al migrar sus servidores de DigitalOcean a Hetzner. La empresa, que opera una plataforma con 30 bases de datos MySQL (248 GB de datos), 34 sitios Nginx, GitLab EE, Neo4j y una aplicación móvil en vivo,

B-trees: la clave para búsquedas rápidas en bases de datos

Este artículo de PlanetScale explica los B-trees y B+trees, estructuras de datos fundamentales en muchos sistemas de gestión de bases de datos (DBMS) como MySQL, PostgreSQL, MongoDB y DynamoDB. Son la base de los índices que permiten búsquedas de datos eficientes. ¿Qué son los B-trees? Un B-tree e

Gran repositorio de blogs sobre tecnologías clave en GitHub

Un desarrollador, OneUptime, ha añadido una extensa colección de 12.000 artículos de blog a un repositorio de GitHub, cubriendo una amplia gama de tecnologías clave. Los temas incluyen ClickHouse (una base de datos analítica de columnas), Redis (un almacén de datos en memoria), MongoDB, MySQL, Rook/

Codex explora 20 años de Hacker News con análisis de datos

Codex, un modelo de lenguaje de OpenAI, ha analizado 20 años de datos de Hacker News, un foro popular entre programadores y entusiastas de la tecnología, utilizando la plataforma Modolap. El conjunto de datos, que ocupa aproximadamente 10 GB en formato parquet, ha permitido a Codex investigar tenden

Oxyde: Nuevo ORM Python Busca Velocidad y Claridad

Un nuevo ORM llamado Oxyde ha sido lanzado para desarrolladores de Python, prometiendo velocidad, claridad y fiabilidad. Inspirado en el ORM de Django, Oxyde se distingue por su enfoque en la explicitud y el uso de Pydantic v2 para la validación de tipos y serialización. El ORM, cuyo núcleo está con

Firetiger facilita acceso seguro a bases de datos privadas

Firetiger ha anunciado la introducción de 'Network Transports', una nueva funcionalidad que permite a sus agentes conectarse de forma segura a bases de datos Postgres, MySQL y Clickhouse que residen en redes privadas. Anteriormente, la imposibilidad de acceder a estas bases de datos, comúnmente ubic

Entendiendo las transacciones en bases de datos SQL

Este artículo de PlanetScale explica las transacciones en bases de datos SQL, un concepto fundamental para el correcto funcionamiento de la mayoría de las aplicaciones que utilizan bases de datos. Una transacción es una secuencia de operaciones (lecturas, creaciones, actualizaciones, eliminaciones)

sql-tap: Monitoriza SQL en tiempo real con código abierto

Un nuevo desarrollador ha lanzado 'sql-tap', una herramienta de código abierto que permite la monitorización en tiempo real del tráfico de consultas SQL para bases de datos PostgreSQL y MySQL. La herramienta funciona como un proxy que se sitúa entre la aplicación y la base de datos, capturando cada

MySQL 9.6: Mejora clave en manejo de restricciones

Readyset.io ha publicado un análisis profundo sobre un cambio significativo en MySQL 9.6 que aborda una limitación arquitectónica de larga data. Históricamente, MySQL ha manejado las restricciones de clave foránea (foreign keys) dentro del motor de almacenamiento InnoDB, lo que significaba que las o

MyFlames: Visualiza y Optimiza MySQL con Gráficos

Un nuevo conjunto de herramientas de código abierto llamado 'MyFlames' ha sido lanzado para visualizar el rendimiento de las consultas de MySQL de manera más intuitiva. Inspirado en los trabajos de Brendan Gregg y Tanel Poder, MyFlames permite a los usuarios generar gráficos de llamas interactivos y

VillageSQL: MySQL con IA y Extensiones Personalizadas

El mundo de las bases de datos se prepara para una evolución significativa con el lanzamiento de VillageSQL, una bifurcación de código abierto de MySQL 8.4.6 LTS. Esta nueva plataforma introduce el VillageSQL Extension Framework (VEF), una innovación diseñada para integrar capacidades de inteligenci

sqldef

sqldef es una herramienta de línea de comandos (CLI) diseñada para comparar dos esquemas SQL. Permite gestionar la migración de Sistemas de Gestión de Bases de Datos Relacionales (RDBMS) utilizando SQL DDL estándar. La herramienta soporta una amplia gama de bases de datos, incluyendo MySQL, MariaDB,