¿Cuáles son algunos buenos recursos para construir un programa de base de datos desde cero?

No hay mucho tiempo para responder, pero:

  • Supongo que está escribiendo esto en C o C ++, porque todas las bases de datos de alto rendimiento lo son. Podría usar otro lenguaje como Java, Go o Rust, pero la gran mayoría de los algoritmos de ejemplo están en C. También Java y Go están administrados por memoria. Créanme, todos los administradores de bases de datos de potencia industrial terminan siendo algo parecido a los mini sistemas operativos, el administrador de memoria incluido y la recolección de basura en lenguajes como Java y Go harían las cosas demasiado complicadas y difíciles de predecir.
  • Obviamente, escríbalo en muchos archivos de origen pequeños y tenga una API clara para usar en otros idiomas, como PHP. SQLite tiene un mecanismo maravilloso para esto, debes conocerlo.
  • Supongo que no desea limitarse a la memoria, sino que desea bases de datos de un tamaño limitado únicamente por disco. Probablemente sea mejor implementar la estructura de datos primaria como un árbol B, B + o B *. Estos permiten un buen equilibrio entre las velocidades de lectura y escritura.
  • Es posible que desee utilizar alguna variante de yacc y lex para analizar SQL. Sin embargo, no hay nada de malo en escribir a mano su intérprete como un analizador de descenso recursivo. La última técnica le permitirá una mayor flexibilidad y un mejor manejo de errores; El primero es mucho más fácil de iterar.

Buena suerte. ¡Es un proyecto emocionante!

Primero aprende a programar: prueba con algoritmos y estructuras de datos. (Eso debería mantenerte ocupado por un año o dos).

Entonces aprendería cómo funcionan las bases de datos. Puedes buscar tutoriales en la web. (Eso debería tomar otro año o dos).

Luego aprende C o C ++.

Luego escribe una base de datos, codifícala y listo. Si hizo bien los primeros 3 pasos, el cuarto paso no debería tomar más de unos pocos meses.