Ver Mensaje Individual
  #6  
Antiguo 10-08-2023
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Reputación: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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!"
__________________
El malabarista.
Responder Con Cita