Skip to content

Horiqq7/table-query-dsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

In-Memory Relational Database & Query DSL

A functional, in-memory relational database engine and custom Query Domain-Specific Language (DSL) built entirely in Scala.

This project simulates core SQL-like operations using pure functional programming paradigms (immutability, higher-order functions, and algebraic data types). It allows for complex tabular data manipulation, multi-table database management, and advanced filtering logic.


🚀 Core Features

Table Manipulation (Table.scala)

  • Core relational algebra operations:
    • select
    • filter
    • insert
    • delete
    • update
  • Advanced operations:
    • join (handles overlapping columns and data merging)
    • cartesianProduct
  • Sorting capabilities
  • Dynamic CSV parsing

Filter DSL (FilterCond.scala)

  • Composable filtering system using Algebraic Data Types (ADTs)
  • Supports:
    • Predicates (Field)
    • Logical operators (And, Or, Not, Equal)
    • Collection evaluators (Any, All)

Database Management (Database.scala)

  • Manages collections of tables
  • Supports:
    • insert (create table)
    • delete (drop table)
    • update operations
    • table selection

Complex Queries (Queries.scala)

  • Demonstrates chaining operations:
    • filtering with compound conditions
    • selecting columns
    • sorting results
  • Enables extracting meaningful insights from tabular data

📁 Project Structure

  • src/main/scala/ -- Core database engine and DSL implementation\
  • src/test/scala/ -- Test suite:
    • TestDatabase
    • TestFilter
    • TestQueries
    • TestTable
  • build.sbt -- Scala Build Tool configuration

💻 Building and Testing

The project uses sbt (Scala Build Tool).

Run in terminal

# Start sbt shell
sbt

# Run tests
test

Or directly:

sbt test

🧠 Technical Highlights

Purely Functional

  • No mutable state (var)
  • Uses immutable collections:
    • List
    • Map
  • Relies on transformations:
    • map
    • flatMap
    • foldLeft

Safe Data Handling

  • Extensive use of Option[T]
  • Avoids runtime exceptions
  • Handles missing or invalid data safely

About

An in-memory relational database engine and query Domain-Specific Language (DSL) built purely in Scala using functional programming principles.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages