![]() |
SpacetimeDB: Desarrollando un motor de base de datos
Se han preguntado como es hacer un motor de base de datos (RDBMS)?
Durante varios meses he estado en un equipo haciendo eso y hoy lanzamos la primera alpha: https://spacetimedb.com asi que si tienen preguntas puedo responderlas. --- Todo empezó con mi interés en hacer un lenguaje de programación relacional (https://tablam.org) y por ahi me contactaron para unirme al equipo. No esta mas decir que no tenia experiencia previa sobre el tema, solo un conocimiento general. He aprendido un montón haciendo esto: Hacer una motor de estos es como hacer tu propio OS, VM, lenguaje, compilador, transpiler, web API, server, memory manager, SDK(s), TODO JUNTO!. Una de las cosas mas retadoras es que el motor esta inicialmente enfocado en videojuegos, y tenemos que lograr que las consultas se ejecuten ENTRE cada ciclo, ósea, con un framerate mínimo de 12 fps nos da un 0.8 sec para el juego hacer toda su lógica de rendereado, ENTRE ESE TIEMPO, tenemos que haber resuelto toda la llamada a la BD. Les comparto un curso de desarrollo de BD que es muy practico y es dado por uno de los mejores del sector: https://www.youtube.com/watch?v=uikbtpVZS2s |
^\||/^\||/^\||/
|
^\||/^\||/^\||/^\||/
|
Se ve interesante, aunque realmente este mundo se escapa a mis conocimientos...
^\||/^\||/^\||/ |
Menuda flipada más interesante....
Aunque ya no sé si mi cabeza estaría a la altura. Bueno, a la altura seguro, y al tamaño también, me refiero al cerebro... Saludos |
Es como todo: Hacer una version que pueda competir con los grandes es todo un rollo, pero una version basica no tanto:
https://cstack.github.io/db_tutorial/ Un ejemplo es decir "voy a cojer varios archivos .csv, donde cada uno es una tabla, y .csvi que es lo mismo pero para indices" y empezar a hacer los métodos de consulta y actualización. Asi no parece tan difícil, cierto? En sintesis, un motor de BD es "simplemente" una interface como:
Donde se pone todo un rollo es en: - Como hago para que varios thread actualicen los datos en un mismo archivo? - Y como hago que ese archivo sea MUCHO mas eficiente que un .csv? - Y como implemento un protocol ACID? El resto (pasear SQL, ejecutarlo, hacer drivers, ...) es relativamente "simple" (bueno siempre y cuando no intenten implementar toda la especificación de SQL!). Los 3 pasos anteriores son los quebraderos de cabeza, pero como todo tienen su "nivel simple, basico, decente y mounstroso!" |
¡Felicitaciones, Mario, por este impresionante proyecto!
Realmente estás llevando las cosas a un nivel superior. Es emocionante ver vuestro proyecto en GitHub, y aún más emocionante saber que está desarrollado utilizando Rust. ¡Sigue adelante con este trabajo excepcional! |
La franja horaria es GMT +2. Ahora son las 00:20:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi