Aconsejame para hacer mi propio DBMS

Iniciado por vladimir98, 20 Julio 2017, 07:13 AM

0 Miembros y 1 Visitante están viendo este tema.

vladimir98

Saludos!Soy un estudiante de ingeniería y tengo como proyecto crear mi propio DBMS (con las sentencias SELECT, INSERT, UPDATE, DROP, DELETE y CREATE) con las limitaciones que:- NO sea relacional - SI sea mono-usuario - NO contenga transacciones- SIN interfaz gráfica (todo desde consola)El punto es que no sé como empezar realmente, con lo que he encontrado hasta el momento concluí a usar Antlr como interprete de mi lenguaje y programarlo en C o en C# aun realmente no sé cual sea mas conveniente (me voy por C, pero muchos me sugieren C# pero ni idea el porque).No tengo conocimientos bastos sobre archivos aun, si pudiesen compartirme algunos links donde den información clave para este tema (desde sus propios puntos de vista) se los agradecería como nunca.Y más, vengo aca a pedir consejo y guía de algún experto en el tema, no vengo a pedir el proyecto, si alguno me pudiese apoyar se lo agradecería.

ivancea96

Sobre el tema del lenguaje, utiliza el que mejor conozcas. C# tiene una librería más amplia y es orientado a objetos.
C es un lenguaje estructurado.

Antes que C, yo recomendaría C++, que viene siendo casi lo mismo, pero orientado am objetos y con una mayor librería estándar.
Pero si no lo has usado nunca, mejor usar el lenguaje que conozcas; este proyecto, como cualquier otro, se puede hacer en prácticamente cualquier lenguaje.

Elegido el lenguaje, viene el proyecto.
Olvídate del SQL. Empieza haciendo un programa para leer, insertar, editar y eliminar registros de 1 sola "tabla". Una vez tengas controlado este tema, lo otro es prácticamente lo mismo, añadiendo el lenguaje SQL.

El tema más crítico en este punto, es el cómo almacenarás los registros en el o los archivos. Es lo más "complejo", pero en absoluto difícil.

No tengo ningún link sobre archivos per sé, lo único que puedo decir de ellos es que son bytes, que puedes escribir y leer :D!
Si tal, una vez decidas el lenguaje, pueda ayudar más con algún tema acerca de manejar archivos en ese determinado lenguaje.

En cualquier caso, ¿Trabajaste de algún modo con archivos hasta ahora?

vladimir98

Hola amigo! gracias por responder!Déjame decirte que pienso hacer el programa en C, y prácticamente no se gran cosa sobre los archivos (mas que todo teoría) y con lo de la estructura de almacernalo pensaba en arboles B.Muchas gracias por tus consejos, Saludos!

ivancea96

Está bien que quieras utilizar un árbol B, pero para empezar con archivos, tal vez sea un poco bruto xP
A la hora de guardar los registros en un archivo, lo básico es serializar (para posteriormente deserializar) las estructuras/clases/registros. Un árbol es un poco más complicado. No es difícil, pero no lo haría comp primer contacto con archivos :D!

Acerca de serializar, te dejo un link en el que hablé de ese tema. Está e C++, pero no hay nada muy complicado que no sea casi igual en C. http://code0x66.blogspot.com.es/2015/04/c-serializacion-de-clases.html

Una vez serializado el registro, basta escribirlo al archivo.
La estructura de los registros en el archivo, en vez de un árbol, te diría que empieces guardándolos simplemente como un array de registros. Es más fácil de leer y más fácil de escribir.

Y para empezar, prueba con algún objeto simple, por ejemplo Persona{int edad; char* nombre;}

En el archivo, podría tener esta estructura. Los enteros en binario, no como texto plano. Podrías ponerlos como texto, pero ocuparía más espacio y habría que pensar en otras limitaciones:
Archivo:

<registro1><registro2><...><registroN>

/////

Registro:

<4 bytes: edad><2 bytes: longitud nombre><N bytes: nombre>


Y sobre el tema de manejo de archvios en C per sé, casi mejor que busques por Google, que habrá mejores tutoriales. Al final, solo necesitas abrir el archivo (fopen), escribir en él (fwrite) y leer de él (fread).

vladimir98

Amigo muchas gracias por toda la info! y concuerdo contigo que comenzar por el camino del arbol esta muy duro xP, practicaré esos ejercicios que me dices e iré viendo (como he estado por ahora)Nuevamente gracias =) saludos