Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   SpacetimeDB: Desarrollando un motor de base de datos (https://www.clubdelphi.com/foros/showthread.php?t=96329)

mamcx 09-08-2023 16:01:14

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

Casimiro Notevi 09-08-2023 17:00:09

^\||/^\||/^\||/

pgranados 10-08-2023 00:21:39

^\||/^\||/^\||/^\||/

Neftali [Germán.Estévez] 10-08-2023 08:52:29

Se ve interesante, aunque realmente este mundo se escapa a mis conocimientos...
^\||/^\||/^\||/

fjcg02 10-08-2023 16:12:14

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

mamcx 10-08-2023 17:15:04

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:

Código Delphi [-]

TDatabase = class
 function Open(var file: String): TDatabaseInstance;
end;


TDatabaseInstance = class
 function New(var file: String): TDatabaseInstance;
 
 function add_record(var tableId: Int, var: Data):TDataResult;
 function update_record(var tableId: Int, var: Data):TDataResult;
 function delete_record(var tableId: Int, var: Data):TDataResult;

 function seek_record(var tableId: Int, var: Query):TDataResult;

end;


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!"

PepCat 11-08-2023 17:11:07

¡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 09:29:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi