Size: a a a

2021 July 04

ГР

Геннадий Романов... in pro.algorithms
Есть набор row в БД разной ёмкости
как из них формировать файлы заданной ёмкости (<100мб) в притык?

добавлять по одной строке и проверять ёмкость очень долго.
Если сразу писать пачку то как выбрать оптимальный размер пачки который всегда будет меньше  заданного размера (<100mb)?

Коллега брал max light строки из конкретно взятых данных
потом делил 100mb на её размер и получал максимальное кол-во строк которое теоретически может максимум влезть и использовал это число,
но тут минус в том что данные то могут различаться и файл может вылезти большего размера
источник

ГР

Геннадий Романов... in pro.algorithms
@MikailBag судя по ответам у тебя очень глубокие познания в алгоритмизации
интересно на чем программируешь и в какой сфере?
источник

F

Free in pro.algorithms
Как посчитать одинаковые слова вектора
источник

AB

Artem Brezhnev in pro.algorithms
sortом или мапой
источник

MB

Mikail Bagishov in pro.algorithms
Довольно большой опыт спортивного программирования
источник

ГР

Геннадий Романов... in pro.algorithms
а какой язык?
источник

MB

Mikail Bagishov in pro.algorithms
C++
источник

q

qwerty in pro.algorithms
в хеш-таблицу суешь
источник

M

MaxGraey in pro.algorithms
Обычно нет никакой разницы. Разве что если это не чисто функциональный язык, там алгоритмы несколько иначе работают, например можно найти maximum или minimum используя обычныю сортировку за O(N) в наихудшем случае так как обычно там ленивое выполнение
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
хм, а как там будет O(N) в худшем даже если вычисления ленивые?
источник

M

MaxGraey in pro.algorithms
источник

 P

 ‌‌Gleb Pilipets... in pro.algorithms
Хм, спасибо. Почитаю
источник

IG

Ilya Gontarev in pro.algorithms
Есть сервис, который должен кешировать данные, которые представляют из себя 1-1, уникальный стринговый идентификатор к массиву структур, где структура таймстемп и пейлоуд(то есть массив будет отсортирован по таймстемпу). На старте данные вычитываются из бд, затем хранится in-memory и необходимо предоставлять гетеры вида, получить массив от заданного таймстемпа вперед или назад на n. Также данные  дополняются новыми структурами раз в минуту.
Наивная реализация, хранить данные в хеш таблице, где ключ стринговый идентификатор, а значение массив, критическую секцию обернуть rw lock'ом.
Очевидный минус данной реализации, избыточность данных в памяти, также бинарный поиск в массиве даст log(n).
Знает ли кто более оптимальное решение?
источник

С

Степан in pro.algorithms
А насколько n большой?
источник

С

Степан in pro.algorithms
И как много структур добавляется раз в минуту?
источник

IG

Ilya Gontarev in pro.algorithms
в гетере n меньше тысячи будет, длина самого массива будет ~100 000, раз в минуту добавляется 1 запись
источник

С

Степан in pro.algorithms
Одна запись в один массив, или в каждый?
источник

IG

Ilya Gontarev in pro.algorithms
в каждый
источник

С

Степан in pro.algorithms
Немного не ответ на вопрос, но мне кажется, самый оптимальный вариант в вашем случае - не изобретать велосипед и использовать какую нибудь OLAP базу данных. Например, ClickHouse
источник

IG

Ilya Gontarev in pro.algorithms
Согласен, однако тут по требованием необходимо реализовать это без внешних сервисов
источник