powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Работа с большими данными
25 сообщений из 112, страница 2 из 5
Работа с большими данными
    #39507993
skyANAИМХО - это простой импорт из различных источников.
Заливаем данные файла в промежуточную таблицу в схеме import, перегоняем в основную только те слова, которых там ещё нет (WHERE NOT EXISTS).
В основной таблице должен быть соответсвующий индекс.

Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ?
Или можно как то триггером это обработать при вставке ?
...
Рейтинг: 0 / 0
Работа с большими данными
    #39507995
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович.maytonAleksandr Sharahov, на чем будешь писать? Delphi? C#?

Возможно вопрос автору темы

Писать планирую на delphi
Да. Все верно. Я как раз автора хотел спросить.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39507996
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут пишут как при вставке в MS-SQL игнорить ошибки уникальности

https://stackoverflow.com/questions/1139050/how-to-ignore-duplicate-key-error-in-t-sql-sql-server

можно взять за образец. Но поскольку речь идет о большом объеме вставок
я-бы еще почитал как делать тонкую настройку индекса (таблицы?) в MS-SQL
для mass-inserts и еще надо-бы проверить режимы транзакций. Хорошо-бы
это делать одной большой транзакцией чтоб не было накладных расходов
на всякие-там open-close ...e.t.c. Впрочем я тут не спец. Возможно для MS
это не проблема.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39507997
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович.По данным планируется поиск и выборка по 200 - 300 тыс записей
Нет никакого смысла связываться с СУБД при таком количестве уникальных данных.
Используйте просто хеш-таблицу в памяти. Это будет самый быстрый вариант.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39507999
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович.Возможно вопрос автору темы

Писать планирую на delphi

Ну тогда хеш-таблицы будет достаточно http://guildalfa.ru/alsha/node/32
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508001
Всем спасибо
буду изучать предложенные варианты
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508007
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович.skyANAИМХО - это простой импорт из различных источников.
Заливаем данные файла в промежуточную таблицу в схеме import, перегоняем в основную только те слова, которых там ещё нет (WHERE NOT EXISTS).
В основной таблице должен быть соответсвующий индекс.

Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ?
Или можно как то триггером это обработать при вставке ?
Не надо никаких отдельных запросов и триггеров.
Вставляете данные из файла в промежуточную таблицу как есть, а из неё уже одним запросом перегоняете в основную с условием WHERE NOT EXISTS.
После этого промежуточную таблицу очищаете.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508009
skyANAАндрей Александрович.пропущено...


Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ?
Или можно как то триггером это обработать при вставке ?
Не надо никаких отдельных запросов и триггеров.
Вставляете данные из файла в промежуточную таблицу как есть, а из неё уже одним запросом перегоняете в основную с условием WHERE NOT EXISTS.
После этого промежуточную таблицу очищаете.

Спасибо
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508016
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович.буду изучать предложенные варианты
Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508020
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАндрей Александрович.буду изучать предложенные варианты
Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед.
Как быть с его толстым файлом который в 150Г ?
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508025
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovАндрей Александрович.буду изучать предложенные варианты
Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед.
Я так понял, что это не подходит, потому как повторяющиеся слова разбросаны по разным файлам.
А эти файлы в общем случае могут не одновременно загружаться. При этом ещё и иметь разный формат.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508031
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronАндрей Александрович.2 тб в виде набора файлов ( файлы от 200 мб до 150 гб
Это реально много.
Андрей Александрович.Правильным ли решением будет использовать для этого СУБД ?
Скорее нет чем да. И скорее всего все другие вопросы не релевантны.
Андрей Александрович.- Есть ли готовые решения для поиска дубликатов в таких обьемах данных ?
Возможно есть в биоинформатике. Но ваша задача, если я правильно предпологаю, не поиск одного дупликата и не поиск всех дупликатов.

Для создания списков уникальных значений потребуется на скромный взгляд ещё 2 - 3 ТБ.
И считатся это будет наверно дни. на вскидку и без базы данных. Такая работа стоит времени специалиста и за пределами бесплатных консультаций. ИМХО.

Да чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много.

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


Файлы представляют собой хранилища слов всех языков мира
те списки слов на разных языках

9821832. Чем вызван такой способ хранения данных?


Дали файлы - сказали решить вопрос с дубликатами и хранением

9821832. Чем отличаются отдельные файлы. (Это последовательно обрезанный поток данных, или это данные с разных источников?)

Это файлы с разных источников ( часто даже с различным способом хранения данных - те нужно будет к каждому файлу писать парсер или свою проверку корректности данных. Учитывая что там еще слова на разных языках то переводить все в UNICODE )

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

У вас тут решающим будет вопрос о поддержке юникода в вашем приложении и в СУБД, имейте это в виду В ПЕРВУЮ ОЧЕРЕДЬ.
При чём это будет не просто какая-то поддержка юникода, а ПОЛНАЯ поддержка юникода.

Правда, может не всё так и плохо -- мы же так и не знаем, что там у вас за данные о словах, что там вам с ними надо будет делать, помимо удаления дубликатов (которое кстати также может быть весьма забавной задачкой, поскольку есть слова-омонимы, и вам нужно будет определять, это другое определение того же слова или это вообще другое слово-омоним).
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508034
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня есть подозрение что этих гигабайтных файлах полно всякого
шлака который надо не унифицировать а просто удалять. Сами подумайте.
Ни один писатель в мире больше сотни мегабайт текста не написал.

А здесь речь идет о гигабайтах. Что там за справочники? Что за словари?
Что там за данные? Это больше чем Британская энциклопедия.

Вобщем прошу автора прояснить.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508049
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglmikron,

хэширование спасет мир
Не спасёт но делает его немного лутше.
После совпадения хеша надо делать полную проверку. Если сравнивать записи то будет много метаний.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508050
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В однотомном словаре С.И. Ожегова представлены около 57 тысяч слов. В четырехтомном словаре, созданном под редакцией Д.Н. Ушакова, указаны более 85 тысяч слов. В семнадцатитомном словаре современного русского литературного языка, изданного Академией наук СССР, располагается 120 480 слов. В далевском «Толковом словаре живого великорусского языка» представолены более 200 тысяч слов!

Разные словари дают разную оценку словарному составу английского: некоторые источники насчитывают примерно 500 тысяч слов, другие - примерно 400 тысяч. Стоит остановиться на чем-то оптимальном - например, словаре Уэбстера, который насчитывает 425 тысяч слов. По некоторым подсчетам, активный словарный запас у самых начитанных европейцев и американцев насчитывает не более 20 тысяч слов, а пассивный - не более 100 тысяч.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508051
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другие источники говорят:
По версии GLM, сейчас английский язык насчитывает 1 миллион 4 910 слов. Причем согласно статистике, новое слово в английском языке появляется каждые 98 минут (в день 14,7 слов). А вот миллионный рубеж был преодолен 10 июня прошлого года в 10.22, когда эта компания зафиксировала еще одно новое слово Web 2.0, обозначающее новое поколение всемирной компьютерной сети.

http://www.languagemonitor.com/
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508052
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivДа чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много.

Я не говорил что ДБМС не справятся. Я сказал только скорее всего их применение не оправданна для этой задачи. С чем вы не согласны?
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508063
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronMasterZivДа чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много.

Я не говорил что ДБМС не справятся. Я сказал только скорее всего их применение не оправданна для этой задачи. С чем вы не согласны?
Мы сейчас обсуждаем алгоритм решения задачи не зная деталей. Может эта задача действительно
решается хеш-табличкой. Но нам нужен хоть какой-то estimation по поводу "толстого" файла.
Если там - низкая кардинальность то все 150 гиг свернутся в нормальные 200 тысяч слов английского
языка.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508065
Bred eFeM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Александрович., хэширование память и сортировка спасет мир. Cерверок с 512ГБ уже купили/арендовали ?
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508073
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

по моему больше высказывается догадок.
Задача же в постановке автора - есть 2тб данных, разбросанных по файлам. Логическая единица информации - запись, распологается одной строкой. Нужно удалить все дебликаты записей. Автор не спрашивает как ему организовать хранение этой информации для последующей обработки. Поэтому любая база - уже ненужные расходы. Кластеры, вертика, террадата и т.д. Все это можно но неоправданно.
Моя грубая оценка:
Любая база данных: доп расходы на хранение записей. Пусть 40 байт служебной информации на запись. При длинне записи в 60 байт мы получим в итоге 4 тб данных в базе. Всего 2^40 / 64 получим 16 милиардов записей.
Что бы убрать дупликатуы будем сортировать. Или есть другие предложения для базы?
Пусть будет сортировка. Значит нам потребуется ещё минимум 4 тб на временные таблицы.
Ну а про время я затрудняюсь даже оценить. Слишком большой разрос от дбмс.
Юниксовские утилиту уже лутше, но uniq работает на отсортированных данных. Ну а sort будет сортировать - во первых это не нужно, во вторых долго, в третьих потребует 4 тб
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508075
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronЛюбая база данных: доп расходы на хранение записей. Пусть 40 байт служебной информации на запись. При длинне записи в 60 байт мы получим в итоге 4 тб данных в базе. Всего 2^40 / 64 получим 16 милиардов записей.
Что бы убрать дупликатуы будем сортировать. Или есть другие предложения для базы?
Пусть будет сортировка. Значит нам потребуется ещё минимум 4 тб на временные таблицы.
Ну а про время я затрудняюсь даже оценить. Слишком большой разрос от дбмс.
Юниксовские утилиту уже лутше, но uniq работает на отсортированных данных. Ну а sort будет сортировать - во первых это не нужно, во вторых долго, в третьих потребует 4 тб
Откуда вообще 60 байт? Вроде автор вообще не говорил ничего подобного.

И при чем здесь сортировка?
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508077
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

Слова разных языков, очевидно, различны.
В каждом языке ~ 10^6 слов.
Загрузка в хеш-таблицу одного языка ~ 0.1-1 мин.

Что потребуется дополнительно:
- дать файлам имена в соответственно языку,
- процедура чтения слов языка из файлов,
- процедура записи слов языка в файл.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508078
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если же допустить что у нас 2^34 записей и мы можем адресовать запись одним 64bit словом то получится для хештаблицы потребуется 127 гб памяти.
При колизии хеша нужно проверять всю запись. А значит уже при 1% нужно будет проверить 256 милион записей. Hdd с при чтении в разброс с позиционированием головок при 16 мс получим 2^27 х 2^4 x 2^-10 x 2^-6 x 2^-6 получим 2 ^ 9 часов. После нахождения дупликата его надо удалить. Тут куча вариантов реализаций. Но 600 часов уже kill argument.
...
Рейтинг: 0 / 0
Работа с большими данными
    #39508081
Aleksandr Sharahov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,

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


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