Publicado hace 5 años por oraculus_reloaded a theguardian.com

En Abril, The Guardian apagó el clúster DB de Mongo utilizado para almacenar nuestro contenido después de completar una migración a PostgreSQL en Amazon RDS. Este post cubre por qué y cómo.

Comentarios

D

#3
Porque si no viene de Xataka no interesa.

D

#4 O no se entiende.

D

#5
Lo que viene a ser exactamente lo mismo. Menéame está en niveles Xatakamierder para llegar a portada del general.

frg

#3 "Cazadores de carma", en cuanto huelen la sangre en portada, se tiran a por sus "puntos". ¿No hay una política que penalice el "farmeo" en menéame?

Avantasia

#3 Bueno a mi no me parece un buen artículo por lo que comento en #20, pero lo voté positivo porque me gustaría que hubiera debate, pero ya veo que si no es de la misma mierda política o sensacionalista de siempre aquí no llega a portada nada.

Cantro

#22 a mi me parece interesante porque explican el proceso desde que se dan cuenta de que ha sido una metedura de pata y como hicieron para superar el problema

D

#3 La verdad es que es un articulazo.

Explican los problemas que tenían... los motivos que les llevan a migrar... y encima si lo sumas a "por qué se fueron a Mongo" diría que han tenido bastante mal asesoramiento en el pasado.

No es el primer caso de negocio que conozco que sucumbe a una moda. La época de la migración a MongoDB es la época en la que se hablaba que las NoSQL iban a matar a las relacionales porque se podía hacer lo mismo que en ellas pero encima no tenías esquema o éste era mucho más rígido. Una mentira tremenda pero sostenida durante años.

Han tardado por lo menos 5 años en comprender que cada base de datos tiene su uso . Yo he llegado a ver una base de datos relacional montada sobre Elasticsearch...

Relacionado con ésto... recomendaría el post de Discord sobre sus BBDDs: https://blog.discordapp.com/how-discord-stores-billions-of-messages-7fa6ec7ee4c7

Cantro

#28 Bueno, sobre el papel Mongo es una elección válida para un periódico cuyas noticias no deberían tener muchas relaciones. Diría que su principal problema vino por el lado cloud y aparte había algunas limitaciones técnicas para lo que ellos querían.

De todas formas, yo tampoco hubiera escogido una NoSQL para esto. Por mucho que deteste Postgre me parece una idea mucho más sensata utilizarla antes que Mongo. Mongo está bien para datos de auditoría y en general datos que no tengan una estructura demasiado homogénea y que además sean relativamente (o completamente) independientes entre sí. Por más novedosas que parezcan en realidad son bastante rústicas.

PD: Si algún jefazo de Mongo me lee... mi deseo para los reyes magos es que levantar un ReplicaSet en Docker via Ansible no sea un trabajo para Ethan Hunt, campeones.

D

#29

Yo no creo que viniera por el tema Cloud... yo repito creo que es un mal asesoramiento: AWS da muchas facilidades para algunas de las cosas que necesitaban y me parece como poco arriesgado meterse en el berenjenal que se metieron sin el asesoramiento de algún DBA en condiciones. Las noticias están estructuradas por temas, días, etiquetas, autores.... para mi eso te define una BBDD relacional de manual. La duda puede ser el sistema de comentarios... pero poco más. MongoDB soporta "relaciones" pero NADIE en Mongo te va a recomendar que la uses salvo que sea tu último recurso.

Según mi experiencia, la descripción de las limitaciones y los problemas que tenían les debía llevar a utilizar una base de datos relacional que soporte documentos (JSONs, etc) y que tenga capacidad de escalar. Vamos un PostgreSQL con réplicas de solo lectura lol

El miedo de las compañías a las bases de datos relacionales se basa en los problemas que se sufren con las modificaciones de esquema y su poca escalabilidad (cortes para mantenimiento y tal), pero es que si necesitas datos estructurados estás atado a ellas... Salvo que decidas utilizar Cloud Spanner*, (utilizada por Airbnb) siempre vas a estar atado a los límites matemáticos del teorema CAP.

Levantar un ReplicaSet en Docker con Ansible no es difícil, Google tiene hasta laboratorios públicos para ello... ¿Cual es el problema?

Nota 1: ¿ Por qué detestas PostgreSQL?
*Nota 2: Spanner es 99,95% C, 99,95% A y 99,95% P ... pero es carísimo lol

Cantro

#30 Te respondo el día que vuelva por la ofi para darte datos un poco más concretos, pero parece imposible conseguir que levante sin hacer acciones manuales para crear el RS. Ahora mismo estamos planteándonos hacer un contenedor auxiliar que cree la estructura del master (usuarios, colecciones, etc) para que cuando se levanten los tres contenedores definitivos el master pueda iniciar la comunicación.

Hemos visto mogollón de ejemplos de cómo hacerlo pero siempre, siempre tiran de acciones manuales para inicializar por primera vez el sistema y lo que nos interesa es que un playbook levante todo sin intervención humana.

Tal vez no hemos dado con el ejemplo correcto (o peor, no lo hemos entendido), pero es una de mis tareas para estas navidades y me gustaría tenerla lista para cuando vuelva el resto de la gente lol

PD: Porque Postres en Mongo nos ha dado bastantes problemas a la hora de hacer ciertas configuraciones. Bendita versión 11, donde cosas que nos hicieron sudar sangre en versiones anteriores salieron a la primera.

minardo

Pedazo de artículo!!!

ankra

#1 #2 Pues tengo malas noticias: Esto se resumen en un "me dijeron de hacer A y que esto valia para A" me lo pase por el forro y no funciona como quiero. Hay un comentario en reddit enorme explicando todo, pero no he conseguido encontrarlo

Avantasia

#6 Venia a decir esto mismo, de hecho no se que esperan, que los problemas desaparezcan? se quejan de:
- Que el soporte era malo y llevar la BD ellos mismos es difícil. Ahora pasan a tener absolutamente ningún soporte con nadie y siguen llevando todo ellos.
- Que si configuran mal las cosas van mal (esto por lo de NTP y lo de su app generando indices y demás y tal) pues como con mongo con cualquier cosa, si haces cosas mal pasan cosas malas, a cualquiera le puede ocurrir, pero echar balones fuera es un problema aún mayor.
- Que antes usaban Oracle, pasaron a una bd de documentos y ahora usan una bd relacional con una columna jsonb lol digo yo.. por qué migraron de oracle? porque los problemas que podrían tener con oracle los pueden tener con postgres exactamente igual (y oracle también tiene JSON como tipo de columna, que ya puestos..)
Por otra parte antes de publicar nada, yo haría un estudio o recolectaría algunos datos para ver como va, porque joder no me creo que empiecen con "bueno hemos puesto postgres y malo será! que el rendimiento debería ir bien!" pero wtf.. tanta prisa tenían por publicar esto? no podían poner benchmarks y cosas objetivas de por qué X es mejor que Y? va mejor? más rápido? es más eficiente? da menos problemas? algo con perspectiva y no una historieta de lo que acaban de hacer este fin de semana.
Que yo soy partidario como el que más da probar, cambiar y oye, cada uno que haga lo que quiera, pero si abren un artículo diciendo prácticamente que mongo es mierda que lo fundamenten un poco, a la gente nos interesan los casos reales pero con datos.

comadrejo

#20 Es posible que migraran de Oracle por los costes de soporte y licenciamiento.

https://www.oracle.com/assets/technology-price-list-070617.pdf

He visto implantar clusters de pocas maquinas en administraciones que salían por mas de 350k€ en licenciamiento.
Luego esta el soporte que es de los mas caros y su calidad es de lo mas normal.

Una cosa esta clara, administrar Oracle es mas complicado que Posgresql. La documentación y el CLI es infinitamente mejor en Postgresql.

frg

#7 Si usas una base de datos específica, para algo que no está diseñada, o la usas de "manera creativa" tendrás problemas.

D

#7 ¿Por qué? ¿Acaso no conoces la persistencia políglota?

Avantasia

#7 Bien, pero ¿podrías argumentar? porque en realidad va un poco en la linea del artículo "bueno cambiamos porque ehmm hicimos cosas mal, montamos una infraestructura medio soportada en vez de la que ellos ofrecen, pero la culpa no es nuestra, es de mongo, mongo malo " lol

LeDYoM

#19 Pues a lo mejor ha cambiado, pero cuando hicimos early adoption,
era mas lenta que el caballo del malo.

demostenes

Bravo por lo de PostgreSQL y condolencias por usar Amazon RDS.
Una empresa como The Guardian puede permitirse tener su propio clúster redundante de almacenamiento y base de datos, aunque sea alquilando servidores en un centro de datos, no usando infraestructura propietaria como la de Amazon.

s

#10 No entiendo el porque de tu afirmación. Para la base de datos primaria donde trabajan los periodistas, puede tenir sentido lo que tu dices. Es una carga predecible y realmente poqueña. Ahora bien, para las proxys caches, donde se almacenan las copias que consultan los subscriptores viene muy bien poder provisionar servidores rapidamente, y poderlos repartir geograficamente todo el mundo ya que las consultas de las subscritores, puede variar mucho si un artículo se viraliza. Esos servidores solo los activas cuando los necesitas. Como el pago es por uso, no se malgastan recursos.

D

Manolete, si no sabes torear, pa qué te metes. Y encima admitiendo que no tienen zorra idea de bases de datos.. señor, llevame pronto...

ED209

Hay muchas empresas tipo startup que usan Mongo "porque es rápido" pero simplemente están empezando. Aparte que hay mucho brogrammer que les gusta usar la tecnología más cool y menos probada para sentirse guays.
Pero cuando la lógica de negocio se complica, la base de datos tiende a ser más relacional que documental, sin embargo la elección inicial (Mongo) se mantiene, y es cuando aparecen los problemas: que no sirve. Empiezan a duplicar documentos para no tener que hacer joins (muy lentos en Mongo), algo totalmente optimizado en Postgres. La hostia está asegurada.

Abeel

Es curioso, porque en muchas universidades venden el MongoDB como la panacea, y evitar el SQL, y ahora van un paso atras.

Me recuerda a ingeniería informática, en el 2011 o así cuando estaba estudiando, en arquitectura de computadores estudiabamos procesadores de los años 90, obsoletos. Y eso que fui a una universidad de las que se consideran buenas en tecnología. Así que, sí, la universidad va un pasito pro detrás al sector.

D

#9 Para nada, ellos mismos dicen que estuvieron a punto de usar DynamoDB, que es Big data, y que lo rechazaron porque todavía no soportaba REST cifrado.

Sobre si les va a ir mejor postres que MongoDB, supongo que será porque hacen muchas consultas por otras claves (id y fecha del artículo) y pocas por el contenido, porque si no cuando vean cómo actúa postres buscando dentro del propio JSONB igual se arrepienten.

#9 Pero es que para entender un procesador actual no digo que tengas que aprender como funcionaban los de los 90, casi que me iría a los de los 70.

D

#18 ¿Sabes de lo que hablas? Primero comparar SQL con NoSQL no tiene sentido, lo primero es un lenguaje, lo segundo es un conjunto de bases de datos de diferentes tipos, soltar cosas como "En cuanto los datos que tienes almacenados necesitan estar relacionados entre sí de alguna manera, vas a necesitar SQL" es demostrar no tener ni idea. NoSQL incluye multitud de tipos de base de datos, no solo las documentales como MongoDB, algunas de ellas como las de grafos precisamente si son excelentes para una cosa lo son para las relaciones entre datos donde una base de datos relacional de "toda la vida" se ahoga de mala manera haciendo joins.

Por otra parte en las bases de datos documentales existen relaciones, lo que no es conveniente es que esas relaciones se hagan en forma de joins como una base de datos NoSQL. Me he encontrado montones de veces a gente intentando replicar la estructura y normalización de base de datos relacional a una documental, y eso es una barbaridad enorme. Duplicar datos, algo que según las reglas de normalización no debería hacerse es normal, irónicamente, en una base de datos documental, y los métodos de actualización que proporciona, que es donde el SQL necesita la normalización, están pensados para tratar con esas duplicaciones.

Para finalizar, los The Guardian migan a Postgres no a una base de datos relacional, porque Postgres también es una base de datos NoSQL de tipo documental como MongoDB mediante campos JSONB que es precisamente lo que están usando en The Guardian ya que la razón de la migración no es documental vs relacional, si no el coste de soportar MongoDB. Y precisamente esa es una gran característica de Postgres, que te permite estar en los dos mundos de forma prácticamente trivial manteniendo una sola infrastructura, sin tener que renunciar a ninguno de los dos tipos de almacenamiento de datos, entre otras muchas, por lo que yo siempre que puedo recomiendo usarla frente a otras como SQL Server u Oracle.