Quiero crear mi propia base de datos, no MySQL, MSSQL, Oracle, MongoDB. ¿Existen marcos, libros, tutoriales o comunidades / personas expertas con las que pueda usar o hablar?

He escrito dos motores de bases de datos “desde cero” y he trabajado en otro. Aquí hay algunos pensamientos:

  • Los carteles que mencionan que esto no es algo que haces a la ligera tienen razón. Los motores de bases de datos, particularmente los motores relacionales, son muy complejos e involucran numerosas áreas de la informática. También implican simplemente una gran cantidad de código, ya que hacen muchas cosas; incluso un motor de base de datos relacional “pequeño” tendrá un mínimo de 75-100K líneas de código C.
  • Dicho esto, creo que hay cosas interesantes que hacer en db world que nadie realmente ha hecho un buen trabajo resolviendo todavía, por lo que no quiero desanimar a nadie que quiera intentar codificar a los administradores de datos para que lo hagan. No estaría de más echar un vistazo a cosas como SQLite y PostgreSQL y algunos de los otros proyectos de código abierto como MongoDB, etc., para ver qué implica.
  • También tendrá que sentirse muy cómodo haciendo pruebas y depuración a gran escala, ya que los núcleos del motor db tienen todo tipo de lugares para errores divertidos 🙂

Aquí hay algunos enlaces aleatorios de Quora que pueden ser buenos para echar un vistazo:

¿Hay bases de datos de código abierto disponibles en el mercado para desarrollar software?

¿Cuál es la historia de las bases de datos relacionales?

La respuesta de Greg Kemnitz a ¿En qué idioma se crea una base de datos? ¿Cómo se crea una base de datos?

¿Qué es un administrador de almacenamiento?

Ahora soy un desarrollador de Java. Quiero aprender a desarrollar una base de datos. ¿Cuáles son algunas sugerencias sobre qué libros de teoría de DB y qué pequeño código de fuente abierta leer?

¡Buena suerte!

Buena suerte. Si hubiera un área de ciencias de la computación en la que pensara que la posibilidad de éxito individual era menos probable, la creación de una base de datos exitosa sería una de las cinco principales, en algún lugar entre encontrar un protocolo de red alternativo para reemplazar TCP / IP y desarrollar un Nuevo estándar de cifrado.

Mi experiencia es que los desarrolladores incondicionales con 12 años de C ++ ingresaron a equipos de ingeniería que hicieron un desarrollo incremental en una tecnología de base de datos bastante joven (solo 5 años) y me dijeron que estaban sorprendidos por la duración y la dificultad de los ciclos de desarrollo.

Sin embargo, si insiste, hay un proyecto que tiene interés llamado Eigenbase. El proyecto Eigenbase. Si puede contribuir a eso, diría que tendrá una ventaja inicial que vale la pena señalar.

Lamento decir que cualquier cosa fuera de eso se consideraría una base de datos trivial, quizás digna de un proyecto de estudiante graduado, pero poco más.

Sí, puede consultar el código fuente de muchas bases de datos de código abierto para descubrir cómo se implementan algunos componentes. Además, hay muchos libros disponibles en Amazon sobre diseño genérico de bases de datos, así como toneladas de información en Internet.

Alguien me pidió que respondiera eso. Los recomendaría al excelente comentario de Michael Bowen, vinculado al final de esta publicación.

Lo que es difícil, más que cualquier otra cosa, al responder la pregunta en generalidades más que vagas es que no sé el propósito para el que se utilizaría esta nueva base de datos. Ejemplos que me vienen a la mente, de diferentes proyectos que he visto a lo largo de los años:

  • ejecutándose en un navegador, como un applet de Java (proyecto iniciado por uno de los cofundadores de Oracle en el pasado)
  • ejecutándose en un conjunto distribuido de nodos con ancho de banda restringido, cualquiera de los cuales podría desconectarse (la aplicación de campo de batalla se propone al Departamento de Defensa, y dejaré que los lectores se imaginen qué podría hacer que un nodo se desconecte)
  • corriendo en una tarjeta de memoria; totalmente portátil sin dejar rastro de su existencia una vez que se retiró la tarjeta de memoria
  • corriendo dentro de una fotocopiadora, proporcionando información de ayuda
  • en el campo de la medicina, un sistema que necesitaba ser replicado a través de una malla, con auditoría completa en la consulta, así como actualización / inserción / eliminación
  • y mi propio favorito: capturar toda la jerarquía de la web, comenzando desde la dirección IP y resolviendo hasta el contenido de cada documento,. Ese proyecto no fue muy lejos.
  • … ..

y así sigue la lista. El punto es: los objetivos de diseño pueden reflejar los casos de uso previstos, y eso ayudará a conducir la conversación a más detalles.

(La respuesta de Michael David Cobb Bowen a Quiero crear mi propia base de datos, no MySQL, MSSQL, Oracle, MongoDB. ¿Existen marcos, libros, tutoriales o comunidades / personas expertas con las que pueda usar o hablar?)

Crear un competidor mySQL u Oracle o SQLServer con una sola mano será casi imposible hoy. Existen bases de datos empresariales, existen bases de datos comunitarias y existen algunas variantes de bases de datos de mySQL.

El lugar para buscar es DBs más en la vena de memcache o Mongo o redis. Son más apropiadamente “almacenes de datos” o alguna otra palabra y no necesariamente bases de datos, pero son los tipos de cosas que un grupo pequeño o un desarrollador solitario pueden crear algo de valor único.

En cuanto a cómo hacerlo. Necesitará conocer un lenguaje de alto rendimiento y estudiar la teoría de la durabilidad de los datos y los patrones de almacenamiento. Nunca he visto a nadie con una hoja de ruta para algo así.