Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
skyANAИМХО - это простой импорт из различных источников. Заливаем данные файла в промежуточную таблицу в схеме import, перегоняем в основную только те слова, которых там ещё нет (WHERE NOT EXISTS). В основной таблице должен быть соответсвующий индекс. Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ? Или можно как то триггером это обработать при вставке ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 11:54 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.maytonAleksandr Sharahov, на чем будешь писать? Delphi? C#? Возможно вопрос автору темы Писать планирую на delphi Да. Все верно. Я как раз автора хотел спросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 11:59 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Вот тут пишут как при вставке в 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 это не проблема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 12:07 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.По данным планируется поиск и выборка по 200 - 300 тыс записей Нет никакого смысла связываться с СУБД при таком количестве уникальных данных. Используйте просто хеш-таблицу в памяти. Это будет самый быстрый вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 12:15 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.Возможно вопрос автору темы Писать планирую на delphi Ну тогда хеш-таблицы будет достаточно http://guildalfa.ru/alsha/node/32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 12:25 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Всем спасибо буду изучать предложенные варианты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 12:32 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.skyANAИМХО - это простой импорт из различных источников. Заливаем данные файла в промежуточную таблицу в схеме import, перегоняем в основную только те слова, которых там ещё нет (WHERE NOT EXISTS). В основной таблице должен быть соответсвующий индекс. Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ? Или можно как то триггером это обработать при вставке ? Не надо никаких отдельных запросов и триггеров. Вставляете данные из файла в промежуточную таблицу как есть, а из неё уже одним запросом перегоняете в основную с условием WHERE NOT EXISTS. После этого промежуточную таблицу очищаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 13:05 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
skyANAАндрей Александрович.пропущено... Вот тут то и вопрос - как делать правильно ? Для каждого слова делать отдельный запрос в БД ? Или можно как то триггером это обработать при вставке ? Не надо никаких отдельных запросов и триггеров. Вставляете данные из файла в промежуточную таблицу как есть, а из неё уже одним запросом перегоняете в основную с условием WHERE NOT EXISTS. После этого промежуточную таблицу очищаете. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 13:11 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.буду изучать предложенные варианты Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 13:58 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАндрей Александрович.буду изучать предложенные варианты Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед. Как быть с его толстым файлом который в 150Г ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 14:28 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovАндрей Александрович.буду изучать предложенные варианты Если файлы текстовые с одним словом на строку, то, вероятнее всего, uniq отработает быстрее, чем вы напишете свой велосипед. Я так понял, что это не подходит, потому как повторяющиеся слова разбросаны по разным файлам. А эти файлы в общем случае могут не одновременно загружаться. При этом ещё и иметь разный формат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 15:02 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
mikronАндрей Александрович.2 тб в виде набора файлов ( файлы от 200 мб до 150 гб Это реально много. Андрей Александрович.Правильным ли решением будет использовать для этого СУБД ? Скорее нет чем да. И скорее всего все другие вопросы не релевантны. Андрей Александрович.- Есть ли готовые решения для поиска дубликатов в таких обьемах данных ? Возможно есть в биоинформатике. Но ваша задача, если я правильно предпологаю, не поиск одного дупликата и не поиск всех дупликатов. Для создания списков уникальных значений потребуется на скромный взгляд ещё 2 - 3 ТБ. И считатся это будет наверно дни. на вскидку и без базы данных. Такая работа стоит времени специалиста и за пределами бесплатных консультаций. ИМХО. Да чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много. Берёте например Vertica или Virtuoso -- и оно вам всё всосёт. Да, придётся повозиться с подготовкой данных, но это вполне ожидаемо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 15:18 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович.9821831. Речь идет о текстовой неструктурированной информации, или о реляционных данных, хранящихся в текстовом виде? во втором случае каково количество полей данных? Файлы представляют собой хранилища слов всех языков мира те списки слов на разных языках 9821832. Чем вызван такой способ хранения данных? Дали файлы - сказали решить вопрос с дубликатами и хранением 9821832. Чем отличаются отдельные файлы. (Это последовательно обрезанный поток данных, или это данные с разных источников?) Это файлы с разных источников ( часто даже с различным способом хранения данных - те нужно будет к каждому файлу писать парсер или свою проверку корректности данных. Учитывая что там еще слова на разных языках то переводить все в UNICODE ) Андрей, мне кажется, это задачка не совсем вам по зубам будет. Ну всё же по уровню вопросов понятно, что опыта у вас маловато для такого. Ну, там подсказывать и направлять можно долго, но делать-то всё равно вам. У вас тут решающим будет вопрос о поддержке юникода в вашем приложении и в СУБД, имейте это в виду В ПЕРВУЮ ОЧЕРЕДЬ. При чём это будет не просто какая-то поддержка юникода, а ПОЛНАЯ поддержка юникода. Правда, может не всё так и плохо -- мы же так и не знаем, что там у вас за данные о словах, что там вам с ними надо будет делать, помимо удаления дубликатов (которое кстати также может быть весьма забавной задачкой, поскольку есть слова-омонимы, и вам нужно будет определять, это другое определение того же слова или это вообще другое слово-омоним). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 15:27 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
У меня есть подозрение что этих гигабайтных файлах полно всякого шлака который надо не унифицировать а просто удалять. Сами подумайте. Ни один писатель в мире больше сотни мегабайт текста не написал. А здесь речь идет о гигабайтах. Что там за справочники? Что за словари? Что там за данные? Это больше чем Британская энциклопедия. Вобщем прошу автора прояснить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 15:39 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Siemarglmikron, хэширование спасет мир Не спасёт но делает его немного лутше. После совпадения хеша надо делать полную проверку. Если сравнивать записи то будет много метаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:21 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
В однотомном словаре С.И. Ожегова представлены около 57 тысяч слов. В четырехтомном словаре, созданном под редакцией Д.Н. Ушакова, указаны более 85 тысяч слов. В семнадцатитомном словаре современного русского литературного языка, изданного Академией наук СССР, располагается 120 480 слов. В далевском «Толковом словаре живого великорусского языка» представолены более 200 тысяч слов! Разные словари дают разную оценку словарному составу английского: некоторые источники насчитывают примерно 500 тысяч слов, другие - примерно 400 тысяч. Стоит остановиться на чем-то оптимальном - например, словаре Уэбстера, который насчитывает 425 тысяч слов. По некоторым подсчетам, активный словарный запас у самых начитанных европейцев и американцев насчитывает не более 20 тысяч слов, а пассивный - не более 100 тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:26 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Другие источники говорят: По версии GLM, сейчас английский язык насчитывает 1 миллион 4 910 слов. Причем согласно статистике, новое слово в английском языке появляется каждые 98 минут (в день 14,7 слов). А вот миллионный рубеж был преодолен 10 июня прошлого года в 10.22, когда эта компания зафиксировала еще одно новое слово Web 2.0, обозначающее новое поколение всемирной компьютерной сети. http://www.languagemonitor.com/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:28 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
MasterZivДа чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много. Я не говорил что ДБМС не справятся. Я сказал только скорее всего их применение не оправданна для этой задачи. С чем вы не согласны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:29 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
mikronMasterZivДа чё за бред-то? СУБД вполне адекватно могут это обрабатывать, там порядка 2 миллиародов записей (если по килобайту считать), не так и много. Т.е. много, но не запредельно много. Я не говорил что ДБМС не справятся. Я сказал только скорее всего их применение не оправданна для этой задачи. С чем вы не согласны? Мы сейчас обсуждаем алгоритм решения задачи не зная деталей. Может эта задача действительно решается хеш-табличкой. Но нам нужен хоть какой-то estimation по поводу "толстого" файла. Если там - низкая кардинальность то все 150 гиг свернутся в нормальные 200 тысяч слов английского языка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:44 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Андрей Александрович., хэширование память и сортировка спасет мир. Cерверок с 512ГБ уже купили/арендовали ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 16:47 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
mayton, по моему больше высказывается догадок. Задача же в постановке автора - есть 2тб данных, разбросанных по файлам. Логическая единица информации - запись, распологается одной строкой. Нужно удалить все дебликаты записей. Автор не спрашивает как ему организовать хранение этой информации для последующей обработки. Поэтому любая база - уже ненужные расходы. Кластеры, вертика, террадата и т.д. Все это можно но неоправданно. Моя грубая оценка: Любая база данных: доп расходы на хранение записей. Пусть 40 байт служебной информации на запись. При длинне записи в 60 байт мы получим в итоге 4 тб данных в базе. Всего 2^40 / 64 получим 16 милиардов записей. Что бы убрать дупликатуы будем сортировать. Или есть другие предложения для базы? Пусть будет сортировка. Значит нам потребуется ещё минимум 4 тб на временные таблицы. Ну а про время я затрудняюсь даже оценить. Слишком большой разрос от дбмс. Юниксовские утилиту уже лутше, но uniq работает на отсортированных данных. Ну а sort будет сортировать - во первых это не нужно, во вторых долго, в третьих потребует 4 тб ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 17:37 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
mikronЛюбая база данных: доп расходы на хранение записей. Пусть 40 байт служебной информации на запись. При длинне записи в 60 байт мы получим в итоге 4 тб данных в базе. Всего 2^40 / 64 получим 16 милиардов записей. Что бы убрать дупликатуы будем сортировать. Или есть другие предложения для базы? Пусть будет сортировка. Значит нам потребуется ещё минимум 4 тб на временные таблицы. Ну а про время я затрудняюсь даже оценить. Слишком большой разрос от дбмс. Юниксовские утилиту уже лутше, но uniq работает на отсортированных данных. Ну а sort будет сортировать - во первых это не нужно, во вторых долго, в третьих потребует 4 тб Откуда вообще 60 байт? Вроде автор вообще не говорил ничего подобного. И при чем здесь сортировка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 17:47 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
mikron, Слова разных языков, очевидно, различны. В каждом языке ~ 10^6 слов. Загрузка в хеш-таблицу одного языка ~ 0.1-1 мин. Что потребуется дополнительно: - дать файлам имена в соответственно языку, - процедура чтения слов языка из файлов, - процедура записи слов языка в файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 17:59 |
|
||
|
Работа с большими данными
|
|||
|---|---|---|---|
|
#18+
Если же допустить что у нас 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 18:16 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39508049&tid=1340295]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 310ms |

| 0 / 0 |
