Skip to content

Dailaim/scalable-data-structures

Repository files navigation

Scalable data structures

Una colección de algoritmos optimizados y estructuras de datos implementadas en TypeScript, diseñadas para resolver problemas reales de manera eficiente y escalable.

🚀 Características Principales

  • Algoritmos de Streaming: Procesamiento de grandes datasets sin cargar todo en memoria
  • Estructuras de Datos Optimizadas: Maps, Sets y Heaps para operaciones O(1) y O(log n)
  • Análisis de Complejidad: Documentación detallada de complejidades temporales y espaciales
  • Escalabilidad: Diseñados para manejar datasets que exceden la memoria disponible
  • TypeScript: Type safety y mejor experiencia de desarrollo

📦 Módulos Incluidos

1. Top Customers Analyzer

Analizador de streaming para identificar los top N clientes más frecuentes sin límites de memoria.

Características:

  • ✅ Procesamiento por lotes configurable
  • ✅ Limpieza automática de memoria
  • ✅ Algoritmo streaming O(n) para datasets masivos
  • ✅ Generador de datos sintéticos realistas

Casos de uso:

  • Análisis de e-commerce
  • Sistemas de CRM
  • Big Data analytics

2. Public Transport Routes Manager

Gestor optimizado de rutas de transporte público con operaciones O(1) para consultas frecuentes.

Características:

  • ✅ Búsqueda de rutas por parada en O(1)
  • ✅ Conexiones entre paradas en O(min(R1, R2))
  • ✅ Operaciones CRUD eficientes
  • ✅ Estadísticas del sistema en tiempo real

Casos de uso:

  • Sistemas de transporte público
  • Aplicaciones de navegación
  • Análisis de conectividad urbana

3. Architecture Design Solution

Propuesta de arquitectura escalable para aplicaciones de delivery usando microservicios.

Características:

  • ✅ Arquitectura de microservicios desacoplados
  • ✅ API Gateway centralizado
  • ✅ Sistema de eventos con colas de mensajes
  • ✅ Cache distribuido con Redis
  • ✅ Almacenamiento híbrido (SQL + NoSQL + Object Storage)

Casos de uso:

  • Plataformas de delivery (Uber Eats, Rappi)
  • Aplicaciones de e-commerce grandes
  • Sistemas distribuidos de alta disponibilidad
  • Arquitecturas orientadas a eventos

4. Order Management API

API REST optimizada para gestión de pedidos con cálculo automático de descuentos y tarifas.

Características:

  • ✅ Cálculo automático de tarifas de entrega por estrato
  • ✅ Sistema de descuentos configurables
  • ✅ Validación de esquemas con Elysia
  • ✅ Estimación de tiempos de entrega

Casos de uso:

  • Plataformas de e-commerce
  • Sistemas de delivery
  • Gestión de inventarios

🛠️ Tecnologías

  • Runtime: Bun (alta performance)
  • Lenguaje: TypeScript
  • Framework Web: Elysia
  • Linting: Biome
  • Testing: Bun test
  • Arquitectura: Monorepo con workspaces

📋 Requisitos

  • Bun >= 1.0
  • Node.js >= 18 (opcional, para compatibilidad)
  • TypeScript >= 5.0

🚀 Instalación y Uso

Instalación Global

git clone https://github.com/Dailaim/scalable-data-structures
cd scalable-data-structures
bun install

Uso Individual por Módulo

Public Transport Routes

cd public-transport-routes
bun install
bun run index.ts

Top Customers Analyzer

cd top-customers-analyzer
bun install
bun run index.ts

Order Management API

cd api
bun install
bun dev  # Servidor en modo desarrollo

📊 Ejemplos de Uso

Public Transport Routes Manager

import { PublicTransportRouteManager } from './public-transport-routes-manager';

const manager = new PublicTransportRouteManager();

// Agregar paradas
manager.addStop({ id: 'stop1', name: 'Centro Comercial' });
manager.addStop({ id: 'stop2', name: 'Universidad' });

// Crear ruta
manager.createRoute({
  id: 'route1',
  name: 'Línea Express',
  type: 'bus',
  isActive: true,
  stopIds: ['stop1', 'stop2']
});

// Buscar rutas por parada - O(1)
const routes = manager.getRoutesByStop('stop1');

Top Customers Analyzer

import { ECommerceAnalyticsSystem } from './top-customers-analyzer';

const system = new ECommerceAnalyticsSystem(100000); // 100K clientes

// Analizar top 10 clientes de los últimos 30 días
const topCustomers = await system.analyzeTopCustomers(30, 10);
system.displayResults(topCustomers);

Order Management API

# Iniciar servidor
cd api && bun dev

# Crear pedido
curl -X POST http://localhost:3000/api/orders \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "customer1",
    "products": [{"id": "prod1", "quantity": 2}],
    "deliveryAddress": {
      "street": "Calle 123",
      "city": "Bogotá",
      "neighborhood": "Chapinero",
      "stratum": 4
    }
  }'

Architecture Design Solution

📋 Componentes principales:

1. API Gateway (centraliza requests)
2. Microservicios independientes:
   - Usuarios, Restaurantes, Órdenes, Pagos, Repartidores
3. Colas de mensajes (RabbitMQ/SQS)
4. Bus de eventos (Kafka)
5. Cache distribuido (Redis)
6. Storage híbrido (PostgreSQL + S3 + Mongo)

🔄 Flujo de ejemplo - Crear pedido:
Cliente → API Gateway → Servicio Órdenes → Evento 'order_created' 
→ Matching asigna repartidor → Notificaciones → Cache actualizado

🧪 Testing

# Ejecutar todos los tests
bun test

# Test por módulo
cd api && bun test

📈 Análisis de Performance

Public Transport Routes

  • Búsqueda por parada: O(1)
  • Conexiones entre paradas: O(min(R1, R2))
  • Memoria: O(R + S) donde R=rutas, S=paradas

Top Customers Analyzer

  • Tiempo: O(n) para n transacciones
  • Memoria: O(batch_size + min(u, 200K)) controlada automáticamente
  • Escalabilidad: Datasets ilimitados con memoria bounded

Order Management

  • Cálculo de pedido: O(P) donde P=productos
  • Validación: O(1) con schemas precompilados
  • Throughput: ~10K requests/segundo con Bun

Architecture Design

  • Escalabilidad: Microservicios independientes escalables
  • Fiabilidad: Colas de mensajes + reintentos automáticos
  • Mantenibilidad: Servicios desacoplados y especializados
  • Performance: Cache distribuido + almacenamiento optimizado

🏗️ Arquitectura

algorithmic-optimization-toolkit/
├── api/                          # REST API para gestión de pedidos
│   ├── src/modules/             # Módulos organizados por dominio
│   ├── tests/                   # Tests unitarios
│   └── Dockerfile              # Containerización
├── public-transport-routes/     # Gestor de rutas de transporte
├── top-customers-analyzer/      # Analizador de clientes frecuentes
├── arquitecture/               # Propuesta de arquitectura de microservicios
│   └── README.md               # Diseño completo para apps de delivery
└── package.json               # Configuración monorepo

🤝 Contribuciones

  1. Fork el proyecto
  2. Crea una rama feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add: AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Estándares de Código

  • Seguir las reglas de Biome configuradas
  • Incluir tests para nuevas funcionalidades
  • Documentar complejidades algorítmicas
  • Añadir ejemplos de uso

📄 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.

👨‍💻 Autor

Dailaim - GitHub

🌟 Reconocimientos

  • Inspirado en algoritmos de competitive programming
  • Optimizaciones basadas en casos de uso reales
  • Enfoque en eficiencia para aplicaciones de producción

📚 Recursos Adicionales


⭐ Si este proyecto te fue útil, ¡no olvides darle una estrella!# scalable-data-structures

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published