https://github.com/kaloslazo/datafusiondb
Integration of different data models (Extendible Hashing, AVL, Sequential File) and advanced information (index) retrieval techniques within a single DB.
https://github.com/kaloslazo/datafusiondb
cpp dbms parser python sql
Last synced: 2 months ago
JSON representation
Integration of different data models (Extendible Hashing, AVL, Sequential File) and advanced information (index) retrieval techniques within a single DB.
- Host: GitHub
- URL: https://github.com/kaloslazo/datafusiondb
- Owner: kaloslazo
- Created: 2024-09-12T23:33:51.000Z (over 1 year ago)
- Default Branch: ui-final-work
- Last Pushed: 2024-10-02T04:49:52.000Z (over 1 year ago)
- Last Synced: 2025-09-20T05:43:36.048Z (7 months ago)
- Topics: cpp, dbms, parser, python, sql
- Language: C++
- Homepage:
- Size: 62.7 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
DataFusionDB
## 📄 Documentación
Se ha considerado crear una documentación utilizando la Wiki de GitHub, la cual puedes encontrar [aquí](https://github.com/kaloslazo/DataFusionDB/wiki), en ella se encuentra información detallada sobre el proyecto, considerando aspectos como la exploración de datos, el funcionamiento del parser SQL, la implementación de la base de datos utilizando una conexión entre Python/C++, entre otros aspectos más.
## 🛠️ Desarrollo
Para poder ejecutar el proyecto en modo desarrollo, tendrás que modificar el archivo `compile_flags.txt` y colocar tus rutas relativas a `pybind11` y a tu versión de `Python`. Esto te permitirá que el compilador `gcc` pueda encontrar las librerías necesarias para enlazar correctamente el código de `C++` con `Python`.
Por otro lado, el archivo `setup.py` sirve como un script de configuración que permite aprovechar la configuración en `cpp` para utilizarse en python. A la hora de ejecutarlo se genera un archivo `.so` que es importado por `frontend/interface.py`, para recibir las funciones de `C++` en `Python`.
1. Instalar dependencias necesarias con `pip install -r requirements.txt`. y si estás en linux `chmod +x ./scripts/arch_dependencies.sh && ./scripts/arch_dependencies.sh`.
2. Ejecutar el comando para generar el archivo `.so` con `chmod +x ./scripts/handle_link_connection.sh && ./scripts/handle_link_connection.sh`.
3. Ejecutar el comando para ejecutar el servidor con `python frontend/interface.py`.
## Consultas SQL
```
CREATE TABLE songs FROM FILE "./data/spotify_data_clean.csv"
CREATE INDEX idx_songs ON songs USING SEQUENTIAL
SELECT * FROM songs
INSERT INTO songs VALUES ('7443958', 'Circles', 'Hollywood's Bleeding', 'ALB007', 'Post Malone')
SELECT * FROM songs WHERE id = '7443958'
```