powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы для бесконечного потока данных.
25 сообщений из 39, страница 1 из 2
Алгоритмы для бесконечного потока данных.
    #38750500
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, господа программисты.
Представьте себе, что есть модуль, на вход которому бесконечно поступают ID пользователей. В любой момент времени м одуль должен уметь быстро ответить сколько за всё время накопилось уникальных пользователей . Каким образом Вы бы стали решать задачу при условии, что:
1) нужно получить точное количество уникальных пользователей
2) достаточно примерного значения с погрешностью, не превышающей нескольких процентов
--
Мое видение: Главное и ключевое слово "бесконечно". Это означает, что мы не можем хранить все записи.
Если бы мы могли хранить все записи, то для первого пункта можно было бы создать Map из уникальных ID и потом брать его "длину".
Но опять же это неправильно, если рассматривать бесконечный поток данных.
Ваши идеи?
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750513
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Межгалактическую систему идентификации планируете?

ВикиНаселение земли
1 ноября 2011 — 7,0 млрд человек
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750521
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем мап? Возьми полноценный SQL-сервер и пиши туда все входящие ID и время поступления. Получишь таблицу с логом, а дальше хоть какие выборки делай.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750525
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для бесконечного потока не поможет, жесткие диски конечны.

Другое дело, если на магнитной ленте - тогда подклеивать можно, скотчем. Главное, что бы атомы железа для феромагнитного покрытия во вселенной раньше не закончились. Как я понимаю, атомов железа не так уж и много, с точки зрения бесконечности...
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750545
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо троллите, но нужна помощь
Считайте, что у меня сервер на Пентиум4 с жестким диском на 128Мб. И забудьте про БД, в данной задаче речь идет о Структурах Данных.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750551
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пофиг какой у тебя сервер. Планируемые характеристики задачи надо конкретнее задавать. Какой тип и размер у ID? На какое число уникальных пользователей примерно рассчитывать?
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750558
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ID : String
Количество: население Земли х10 (по 10 аккаунтов). Чтобы отпало желание хранить их всех в БД и проверять на наличие повторения (уникальность).
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750561
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя уже отпало?
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750565
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Я разрешаю вам больше не писать в данном топике. Спасибо.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750572
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нет возможности хранить map уникальных id (их слишком много), то никак.
вот поступает на вход новое id - как проверить, что оно уже было?

но сдается мне, 70 миллиардов строк хранить таки можно.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750586
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом задача сводится к тому что надо проверить было ли такое значение ID, это не реализовать без хранения факта что оно было. Т.е. минимум места 1 бит на один ID. Или 8 ID в одном байте. Это идеал, в реале будут издержки на организацию хранения, думаю можно вписаться в 2-4 ID на один байт.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750588
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТ.е. минимум места 1 бит на один IDтам id - строки
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750632
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечDima TТ.е. минимум места 1 бит на один IDтам id - строки
можно к числам свести, например посчитать CRC37, что сделает из строки 37-битное число с заданной погрешностью 1-2%
Если изначально на такой размер рассчитывать и не заморачиваться что возможно их намного меньше, то надо кусок памяти 2^29 байт = 0,5 Гб.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750682
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня другое интересует, как эти 70 млрд. ID на сервер попадут? Допустим средний логин 15 байт, т.е. это 1 Тб трафика только на передачу логинов, а ведь еще и полезная инфа будет и ответ ... для обработки всего этого безобразия датацентр потребуется построить, так что жалкие 0,5 Гб памяти для подсчета там найдутся
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750709
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Занизил я 0,5 Гб, надо 16 Гб (2^34). Не суть, если гигантоманией не страдать и поставить нормальный предел в 8 млн. уникальных ID, то хватит массива в 1 Мб:
Считаешь CRC32 от ID (совпадать будет с погрешностью несколько %), оставляешь 23 бита: 20 номер элемента массива, 3 номер бита. Метишь бит в 1.
Для вывода результата считаешь биты установленные в 1.
Вместо CRC32 можно любой другой хэш взять (MD5 например), просто затестить какой быстрее считается.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750845
BagaBaga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaaхорошо троллите, но нужна помощь
Считайте, что у меня сервер на Пентиум4 с жестким диском на 128Мб . И забудьте про БД, в данной задаче речь идет о Структурах Данных.
На какой барахолке Вы такой достанете?
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750857
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BagaBagaНа какой барахолке Вы такой достанете?Ни на какой. Не было таких дисков.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38750887
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovBagaBagaНа какой барахолке Вы такой достанете?Ни на какой. Не было таких дисков.
Было и даже меньше
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751087
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T Было и даже меньше Было 120Мб. 128 - не было.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751291
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaaМое видение: Главное и ключевое слово "бесконечно". Это означает, что мы не можем хранить все записи.


Твоё видение в корне неверно.
Потому что если брать это ограничение за основу, то решений у задачи нет.

Бесконечного ничего не бывает в жизни. Есть только недалёкие постановщики задачи, которым лень думать о сроках этой "конечности".
Значит, надо ввести ограничения, какие-то очень большие, но всё же конечные.

Ну и очевидно, что задача вычисления уникального множества без наличия какой-то памяти, где можно было бы это хранить, не решается.

Именно MAP из уникальных ID, и его длина.
MAP либо в памяти, либо на диске (и частично в памяти).
Либо распределённый.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751292
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaaхорошо троллите, но нужна помощь
Считайте, что у меня сервер на Пентиум4 с жестким диском на 128Мб. И забудьте про БД, в данной задаче речь идет о Структурах Данных.

БД -- это одна из структур данных.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751294
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eldarkaaID : String
Количество: население Земли х10 (по 10 аккаунтов). Чтобы отпало желание хранить их всех в БД и проверять на наличие повторения (уникальность).

Ну, я имел дело с БД такого размера (55 миллиардов записей). Вполне успешно работала на кластере из 8 машин. 32 гига памяти кажется в каждой, по 16 процов (кажется).

Но это не бесконечность.

Кстати, в ходе этого проекта я понял, насколько трудно найти сейчас реально большие данные.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751297
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiveldarkaaID : String
Количество: население Земли х10 (по 10 аккаунтов). Чтобы отпало желание хранить их всех в БД и проверять на наличие повторения (уникальность).

Ну, я имел дело с БД такого размера (55 миллиардов записей). Вполне успешно работала на кластере из 8 машин. 32 гига памяти кажется в каждой, по 16 процов (кажется).

Но это не бесконечность.

Кстати, в ходе этого проекта я понял, насколько трудно найти сейчас реально большие данные.

Да, в этой БД хранилось немного больше, чем просто ID для каждого.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751298
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivMasterZivпропущено...


Ну, я имел дело с БД такого размера (55 миллиардов записей). Вполне успешно работала на кластере из 8 машин. 32 гига памяти кажется в каждой, по 16 процов (кажется).

Но это не бесконечность.

Кстати, в ходе этого проекта я понял, насколько трудно найти сейчас реально большие данные.

Да, в этой БД хранилось немного больше, чем просто ID для каждого.

И запросы были много сложнее, чем поиск по ID.
...
Рейтинг: 0 / 0
Алгоритмы для бесконечного потока данных.
    #38751300
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Мечесли нет возможности хранить map уникальных id (их слишком много), то никак.
вот поступает на вход новое id - как проверить, что оно уже было?

но сдается мне, 70 миллиардов строк хранить таки можно.

70 не знаю, а вот 60 (~кол-во пальцев на руках у всех жителей земли) -- вполне.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритмы для бесконечного потока данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]