DeBeAndo (@debeando) header
DeBeAndo (@debeando) profile picture

Solo hablamos de bases de datos, ingeniería, tech lead, administración, tiempo real, y management en este mundo al revés... Por Nicola Strappazzon C.

Barcelona
Joined October 2019
Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)Photo by DeBeAndo (@debeando)
changingTheProdDB redd.it/1h758zs
4
38
3
467
33,785
Cool article from @AxisIPVideo Engineering on replacing Elasticsearch with @ClickHouseDB for metrics analytics from IoT devices, and using materialized views to manage evolving schema changes. engineeringat.axis.com/schem…
1
4
28
1,538
SELECT * FROM Table
78
765
90
5,423
471,278
Distributed, highly available, and horizontally scalable filesystems like MooseFS exist. So dumb question: why don't people deploy postgres on distributed filesystems and let the filesystem layer handle horizontal scaling? en.m.wikipedia.org/wiki/Moos…
59
30
2
331
81,865
And they didn't even test 8.2 yet ! 😅 #MySQL #MySQLCommunity
3
6
552
Estamos en época de entrevistas, asi que reflotamos el hilo con los 5 errores más comunes que echan cualquier entrevista a perder El año pasado hice 53 entrevistas solo para perfiles junior y no os podeis imaginar lo que cambia la cosa al otro lado de la mesa Vamos allá
4
15
5
149
71,485
Building a #golang container image for production One of the many reasons I love GO is how easy it is to build and containerise. However, it's also important to ensure your production application has the smallest attack surface possible, is portable, and small in size. Let's talk through how you might do that. FROM golang:1.21.0-bullseye as builder This uses the official Go image version 1.21 as the base image and names the stage "builder." Here we are building a multistage docker image. Because GO compiles to a binary, we don't actually need Go to run it and can throw the build dependencies away (docs.docker.com/build/buildi…) COPY . /workdir This copies the current directory into the /workdir directory inside the container. WORKDIR /workdir This sets the working directory inside the container to /workdir. ENV CGO_CPPFLAGS="-D_FORTIFY_SOURCE=2 -fstack-protector-all" This sets an environment variable for the C compiler, with specific flags for hardening the code. You can read more about these flags here: developers.redhat.com/articl… ENV GOFLAGS="-buildmode=pie" This sets an environment variable for the Go build process, instructing it to build a Position Independent Executable (PIE), adding an extra layer of security to the compiled binary. FROM gcr.io/distroless/base-debia… This setups the second image in our multi-stage build. This time, we are using a distroless base image. You can read about the advantage of distroless here: github.com/GoogleContainerTo… COPY --from=builder /workdir/app /bin/app This copies the compiled binary from the builder stage to the /bin directory in the final image. You'll need to update "app" to be the path to your main.go. USER 65534 This sets the user ID for running subsequent commands and for when the container is run. 65534 is often associated with a user that has minimal privileges, enhancing security. ENTRYPOINT ["/bin/app"] This specifies the command to run when the container starts. Again, you'll need to change it depending on how you named your app. That's it! Who knew you could do so much with so few lines! How do you build your images? Anything I should be doing differently?
22
120
2
695
93,550
DeBeAndo retweeted
Murió el creador de Vim, descanse en paz, ¡buen viaje amigo!
13
138
19
641
51,985
Discord engineering has migrated from Cassandra to ScyllaDB. I made a video doing a deep dive on their well written blog on how they improved the performance storing trillions of messages. Topics covered and video links - The Cassandra Troubles - SnowFlake vs UUID - B+Tree and SSDs - LSM Trees and SSDs - Hot partitions - Cassandra GC Pauses - Changing the Architecture - The Data Services - The Migration - ZNS How Discord Stores Trillions of Messages | Deep Dive youtu.be/xynXjChKkJc Podcast anchor.fm/hnasr/episodes/How…
8
138
4
858
90,143
Is db-engines rating trustworthy?
1
1
14
4,654
Oh wow. Lotus 1-2-3 for #Linux github.com/taviso/123elf Back in the old days, I was sent to Lotus 1-2-3 training. At some point, we did IT inventory tracking in IT too. That was a fun project.
9
24
5
186
28,812
En el siguiente artículo de @Percona podemos encontrar una serie de pruebas sobre diferentes #proxies para #MySQL: #ProxySQL, #MySQLRouter y #HAProxy. Te dejamos aquí abajo el artículo para que saques tus propias conclusiones ;) mtr.cool/xcxqippmfb
1
1
216
Here is what 𝗔𝘁-𝗟𝗲𝗮𝘀𝘁/𝗠𝗼𝘀𝘁 𝗢𝗻𝗰𝗲 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗶𝗻𝗴 in 𝗞𝗮𝗳𝗸𝗮 is. Kafka is an extremely important Distributed Messaging System to understand as other similar systems are borrowing fundamental concepts from it, last time we covered Reading Data. Today we talk about At-Least Once and At-Most Once Processing. Why do you need to understand the concept and how it might impact your Stream Processing Application? 𝗦𝗼𝗺𝗲 𝗿𝗲𝗳𝗿𝗲𝘀𝗵𝗲𝗿𝘀: ➡️ Data is stored in Topics that can be compared to tables in Databases. ➡️ Messages in the Topics are called Records. ➡️ Topics are composed of Partitions. ➡️ Each Record has an offset assigned to it which denotes its place in the Partition. ➡️ Clients reading Data from Kafka are called Consumers. ➡️ Consumer Group is a logical collection of clients that read data from a Kafka Topic and share the state. 𝗥𝗲𝗯𝗮𝗹𝗮𝗻𝗰𝗲: ➡️ Consumers commit their state into a Kafka Topic named __consumer_offsets. ➡️ State is denoted by an offset that a Consumer is currently reading at in a given Partition. ➡️ There are different strategies when a commit happens. E.g. every n seconds, on-demand. ➡️ If a Consumer fails or the Consumer Group is restarted, a rebalance will be initiated. ➡️ New Consumers will launch and take the place of the old ones. ➡️ Consumers start Reading Data from the last committed state per Partition. There are different scenarios that can unfold when a Consumer restarts. Let’s take an easy example where you read data from Kafka, buffer it in memory and write a batch into an Object Storage. 𝗔𝘁-𝗟𝗲𝗮𝘀𝘁 𝗢𝗻𝗰𝗲 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗶𝗻𝗴: ➡️ You set an offset commit strategy to on-demand. 1️⃣ Read the entire batch. 2️⃣ Serialize and write it into object storage. 3️⃣ Wait for a successful write. 4️⃣ Commit offsets. ❗️If Consumer fails before committing offsets after a successful Write new consumer will start from the last committed offset and writes duplicate Data to Object Storage. ✅ This is usually ok for Batch Systems as deduplication is performed during ETL. 𝗔𝘁-𝗠𝗼𝘀𝘁 𝗢𝗻𝗰𝗲 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗶𝗻𝗴: ➡️ You commit offsets in small time intervals without waiting for a successful write to Object Storage. ❗️If Consumer fails before a successful Write into an Object Storage new consumer will start from the last committed offset and it will result in some Data not being processed. ✅ This is usually ok for Logging Systems as losing small amounts of data does not affect the System in Critical ways. Have you run into any problems with described behaviours? Let me know in the comment section 👇 -------- Follow me to upskill in #MLOps, #MachineLearning, #DataEngineering, #DataScience and overall #Data space. Also hit 🔔to stay notified about new content. 𝗗𝗼𝗻’𝘁 𝗳𝗼𝗿𝗴𝗲𝘁 𝘁𝗼 𝗹𝗶𝗸𝗲 💙, 𝘀𝗵𝗮𝗿𝗲 𝗮𝗻𝗱 𝗰𝗼𝗺𝗺𝗲𝗻𝘁! Join a growing community of Data Professionals by subscribing to my 𝗡𝗲𝘄𝘀𝗹𝗲𝘁𝘁𝗲𝗿.
9
128
625
63,943
¿Estáis en alguna relación tóxica? Algo tipo amor-odio. Empiezo yo: Notion
28
1
1
31
13,502
DeBeAndo retweeted
¿Por qué debemos usar un gestor de mensajes cómo Kafka o SQS entre otros? Estos servicios los llamaremos brokers de mensajes y juegan un papel crucial a la hora de construir sistemas distribuidos o microservicios para mejorar el rendimiento, escalabilidad y mantenibilidad: 🔹Desacoplamiento: Promueven el desarrollo, despliegue y escalado independientes al crear una separación entre los componentes de software. 🔹Comunicación asíncrona: Permite que los componentes se comuniquen sin esperar respuestas, lo que hace que el sistema sea más eficiente y permite un equilibrio de carga eficaz. 🔹Fiabilidad: Garantizan que los mensajes no se pierdan durante los fallos de uno de los componentes al proporcionar almacenamiento en búfer y persistencia. 🔹Escalabilidad: Gestionan un gran volumen de mensajes, permitiendo que tu sistema escale horizontalmente añadiendo más brokers de mensajes según sea necesario. En resumen, un broker de mensajes puede mejorar la eficiencia, escalabilidad y fiabilidad de tu arquitectura. Considerar el uso de estos servicios puede beneficiar enormemente el éxito a largo plazo de su aplicación. Piense siempre en el panorama general y en cómo sus decisiones de diseño afectarán al proyecto en su conjunto.
1
1
116
DeBeAndo retweeted
¿En la empresa donde trabajas usan convención de nombres?
86%Si
14%No
7 votes • Final results
1
176
DeBeAndo retweeted
8 key data structures that power modern databases. Which one is your favorite, and why?
12
326
3
1,632
131,258
Postgres locks are interesting and can be confusing to understand. There are five lock categories in postgres and over 12 individual locks. I explore all types and categories of locks in this video. Here are they in order. ** Table-Level Locks - ACCESS EXCLUSIVE - ACCESS SHARE - ROW SHARE
- ROW EXCLUSIVE - SHARE UPDATE EXCLUSIVE - SHARE - SHARE ROW EXCLUSIVE - EXCLUSIVE ** Row-Level Locks - FOR UPDATE - FOR NO KEY UPDATE - FOR SHARE - FOR KEY SHARE ** Page-Level Locks ** Deadlocks ** Advisory Locks
10
189
1
1,182
179,286