Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/limitedeternity/db-homework-group

Курс "Базы данных": Домашнее задание "Группировка и агрегация"
https://github.com/limitedeternity/db-homework-group

itmo-university

Last synced: 14 days ago
JSON representation

Курс "Базы данных": Домашнее задание "Группировка и агрегация"

Awesome Lists containing this project

README

        

# db-homework-group

Реализуем утилиту для группировки и агрегации CSV-файла.

В интерфейсе командной строки указываем имя файла, номер поля группировки, номер поля агрегации
и указание на функцию агрегации: count, max или min

Например:


[stack](https://www.haskell.org/ghcup/install/) run data.csv 3 2 sum # группируем по полю 3 и считаем сумму по колонке 2.

## Язык реализации и оформление

На выбор - C, C++, Java, Kotlin, Scala, Python, Go.

Если хочется на другом языке - спросите, можно ли.

Структура исходников - на ваше усмотрение.
Рекомендуется организовать в рамках традиций выбранного языка.
Например, gradle/maven в случае Java.

Дайте краткую инструкцию, как все собрать и запустить.

## Что гарантируется

csv-файл не содержит заголовков, переводов строк, экранирования символов и т.п.

Байтовый размер одной записи не превышает 1000 байт.

Можно предполагать, что аргументы всегда корректны и особо их не проверять.

Ограничимся поддержкой группировки по целочисленный полям разумного размера (в пределах условного long).

Размеры CVS-файла - не более 500Gb.

## Чем не заморачиваемся

Переполнением в при агрегации по суммированию

## Кеширование

Можно положиться на кеширование в файловой системе. Т.е. просто читать строчку за строчкой.

Если сделаете свой кеш, никто вас за это не осудит.

## Ограничения

Приложение не должно в итоге использовать больше, чем 4G памяти. И не обходить это ограничение через mmap.