Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/limitedeternity/db-homework-group
Курс "Базы данных": Домашнее задание "Группировка и агрегация"
https://github.com/limitedeternity/db-homework-group
itmo-university
Last synced: 14 days ago
JSON representation
Курс "Базы данных": Домашнее задание "Группировка и агрегация"
- Host: GitHub
- URL: https://github.com/limitedeternity/db-homework-group
- Owner: limitedeternity
- License: mit
- Created: 2023-10-11T15:01:43.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-18T13:16:24.000Z (about 1 year ago)
- Last Synced: 2024-11-20T07:42:20.989Z (about 1 month ago)
- Topics: itmo-university
- Language: Haskell
- Homepage:
- Size: 27.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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.