Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Программирование Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
Приветствую

Подскажите решение следующей задачи

Есть текстовые данные - порядка 2 тб в виде набора файлов ( файлы от 200 мб до 150 гб )
Задача проверить все файлы и удалить дубликаты ( а так же скомпоновать данные )

Правильным ли решением будет использовать для этого СУБД ?
т.e

1 - читаем файл с данными построчно
2 - вносим данные в БД
3 - перед внесением данных проверяем есть ли уже такая запись в БД

Отсюда вопросы

- как лучше проверять уникальность ? SELECT ? LIKE ? хранимой процедурой ? триггером на INSERT ?
- Какую БД лучше всего использовать ? Есть опыт работы с MySQL, MSSQL, SQLite, Firebird
- Есть ли готовые решения для поиска дубликатов в таких обьемах данных ?
19 авг 17, 23:25    [20736437]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
> и удалить дубликаты

Дубликаты данных которые находятся в файлах
19 авг 17, 23:26    [20736445]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mayton
Member

Откуда: loopback
Сообщений: 41921
Андрей Александрович., успех этого мероприятия зависит от ваших ресурсов.
Самый прямой и надежный вариант - загрузить используя всякие базёвые
утилиты *loader-s ваши данные в одну табличку. И delete-ом почистить
дубликаты. В запросе использовать аналитические функции (PARTITION BY).
19 авг 17, 23:44    [20736463]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mikron
Member

Откуда: Germany / Stuttgart
Сообщений: 815
Андрей Александрович.
2 тб в виде набора файлов ( файлы от 200 мб до 150 гб

Это реально много.
Андрей Александрович.
Правильным ли решением будет использовать для этого СУБД ?

Скорее нет чем да. И скорее всего все другие вопросы не релевантны.
Андрей Александрович.
- Есть ли готовые решения для поиска дубликатов в таких обьемах данных ?

Возможно есть в биоинформатике. Но ваша задача, если я правильно предпологаю, не поиск одного дупликата и не поиск всех дупликатов.

Для создания списков уникальных значений потребуется на скромный взгляд ещё 2 - 3 ТБ.
И считатся это будет наверно дни. на вскидку и без базы данных. Такая работа стоит времени специалиста и за пределами бесплатных консультаций. ИМХО.
20 авг 17, 01:26    [20736547]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6273
mikron,

хэширование спасет мир
20 авг 17, 01:33    [20736552]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
982183
Member

Откуда: VL
Сообщений: 3109
1. Речь идет о текстовой неструктурированной информации, или о реляционных данных, хранящихся в текстовом виде?
во втором случае каково количество полей данных?
2. Чем вызван такой способ хранения данных?
2. Чем отличаются отдельные файлы. (Это последовательно обрезанный поток данных, или это данные с разных источников?)
20 авг 17, 05:51    [20736590]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
ВМоисеев
Member

Откуда: Редкино
Сообщений: 2001
>Андрей Александрович., вчера, 23:25 [20736437]

>...Правильным ли решением будет использовать для этого СУБД ? ...
Рассмотрите такой вариант:
1. Все текстовые файлы находятся в папке файлового сервера - смысловая часть.
2. Поисковая часть (суррогатный_ключ, пользовательское_имя_файла, группа, когда_создан и т.п) находится в записях таблицы(ц) базы данных.
3. Файлы смысловой части имеют имена производные от суррогатного ключа.

С уважением,
Владимир.
20 авг 17, 08:30    [20736613]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
982183
1. Речь идет о текстовой неструктурированной информации, или о реляционных данных, хранящихся в текстовом виде?
во втором случае каково количество полей данных?


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

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


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

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


Это файлы с разных источников ( часто даже с различным способом хранения данных - те нужно будет к каждому файлу писать парсер или свою проверку корректности данных. Учитывая что там еще слова на разных языках то переводить все в UNICODE )
20 авг 17, 08:55    [20736626]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
mikron
Возможно есть в биоинформатике. Но ваша задача, если я правильно предпологаю, не поиск одного дупликата и не поиск всех дупликатов.


Задача - очистка данных от повторяющихся слов
А так же упорядочивание данных при возможности

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


Есть свободные 3 тб те куда делать временные таблицы есть
По времени если пересчет займет 3-9 дней - не проблема. Вопрос именно в том как наиболее быстро сделать чтобы поиск добавление в БД не заняло например месяц или больше

Я так подозреваю что после решение этой задачи станет обработка данных
А лучше всего это делать если данные будут упорядоченны например в БД
20 авг 17, 08:58    [20736633]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
982183
Member

Откуда: VL
Сообщений: 3109
Андрей Александрович.
Файлы представляют собой хранилища слов всех языков мира
те списки слов на разных языках

Т.е. намечается два поля - "Язык" (который берем из файла) и "Cлово"

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

Наверно с хранением и дубликатами.

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

Так эта задача однако на порядок сложнее, чем организовать хранение и чистку.
20 авг 17, 09:06    [20736645]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
982183
Member

Откуда: VL
Сообщений: 3109
Почему на этом гр*** форуме нельзя редактировать посты....
Обычную описку исправить нельзя.
20 авг 17, 09:07    [20736646]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mayton
Member

Откуда: loopback
Сообщений: 41921
Из коробочных решенийй.

Можно посмотреть на unix-утилиты такие как:
1) sort -u
2) unique

и посмотреть их настройки в части использования $tmp как пространства для сортировок.

Если эти коробочные штуки "не взлетят" то можно попробовать грузить в БД. Но грузить
надо грамотно. Учитывая объем - желательно использовать утилиты для bulk/batch загрузки.
Но дальше об этом говорить безсмысленно. Автор должен сообщить нам какая именно
dbms у него выбрана и дальше уже можно что-то советовать более конкретно.
20 авг 17, 09:08    [20736647]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
982183
Member

Откуда: VL
Сообщений: 3109
А что делать с омонимами?
20 авг 17, 09:10    [20736651]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
mayton
Из коробочных решенийй.

Можно посмотреть на unix-утилиты такие как:
1) sort -u
2) unique

и посмотреть их настройки в части использования $tmp как пространства для сортировок.



Спасибо
Изучу

mayton
Если эти коробочные штуки "не взлетят" то можно попробовать грузить в БД. Но грузить
надо грамотно. Учитывая объем - желательно использовать утилиты для bulk/batch загрузки.
Но дальше об этом говорить безсмысленно. Автор должен сообщить нам какая именно
dbms у него выбрана и дальше уже можно что-то советовать более конкретно.


Вот это был один из вопросов
Есть опыт работы с СУБД

MySQL, MSSQL, SQLite, Firebird
Какую посоветуете для хранения больших данных ? ( к сожалению с Oracle не работал )
20 авг 17, 09:13    [20736655]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mayton
Member

Откуда: loopback
Сообщений: 41921
Андрей Александрович.
Вот это был один из вопросов
Есть опыт работы с СУБД

MySQL, MSSQL, SQLite, Firebird
Какую посоветуете для хранения больших данных ? ( к сожалению с Oracle не работал )


По этим СУБД я не специалист. Я больше по Oracle.

Немного работал с MSSQL. И конечно исходя
из авторитета самого вендора я порекомендую MSSQL. Кроме того есть
мысль что аналитические (оконные) функции там поддерживаются.

По поводу SQLite - есть сомнения. Она очень производительная но работает
в условиях когда data segment помещается в оперативку. Если вам удастся
ваш самый крупный справочник прогрузить в SQLite - тогда все будет ОК.
Но и с PARTITION BY надо тоже проверить.

По поводу остальных. Велкам в Сравнение. Задавайте вопросы там. Думаю что помогут.
https://www.sql.ru/forum/db-comparison
20 авг 17, 09:24    [20736668]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
schi
Member

Откуда: Москва
Сообщений: 2601
По-моему можно вызять любую СУБД и организовать в ней таблицу с одним полем и уникальным индексом по нему. Далее последовательно читать все файлы и каждое слово пытаться записать в эту таблицу. Если не удалось, то значит дубль, если удалось, то записывать слово в выходной файл.

(Насколько я понял задачу).
20 авг 17, 10:40    [20736710]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
982183
Member

Откуда: VL
Сообщений: 3109
Т.Е отсечь дублирование на этапе импорта данных....
мысль хорошая.
20 авг 17, 11:08    [20736731]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
А я понял задачу так: например есть у нас три файла разного формата, в каждом из которых подмножество слов французского языка.
Нужно данные каждого файла распарсить, нормализовать и залить в БД.

ИМХО - это простой импорт из различных источников.
Заливаем данные файла в промежуточную таблицу в схеме import, перегоняем в основную только те слова, которых там ещё нет (WHERE NOT EXISTS).
В основной таблице должен быть соответсвующий индекс.
20 авг 17, 11:08    [20736733]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
ИМХО большая часть времени уйдёт на написание партеров-загрузчиков из различных форматов.
20 авг 17, 11:11    [20736736]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mayton
Member

Откуда: loopback
Сообщений: 41921
Чисто в качестве brainstorm ... можно попробовать зарегаться в Amazon AWS.
И там будут доступны всякие API и хранилища для толстых данных.

Попробовать прогрузить туда табличку в 150Гиг и там отфильтровать.

Возможно но этом шаге Amazon попросит оплатить услугу а может и нет.
Вобщем я-б попробовал. Или взять табличку в два раза меньше и еще раз
попробовать.
20 авг 17, 11:11    [20736737]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
skyANA
Member

Откуда: Зеленоград
Сообщений: 26639
Андрей Александрович.,

а вообще как эти данные потом будут использоваться? А то можно и в MongoDB их засунуть с шардированием из коробки.
20 авг 17, 11:12    [20736738]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Aleksandr Sharahov
Member

Откуда: Москва
Сообщений: 1755
Все слова одного языка вполне можно обработать в оперативной памяти.
20 авг 17, 11:12    [20736739]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
mayton
Member

Откуда: loopback
Сообщений: 41921
Aleksandr Sharahov, на чем будешь писать? Delphi? C#?
20 авг 17, 11:49    [20736768]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
skyANA
Андрей Александрович.,

а вообще как эти данные потом будут использоваться? А то можно и в MongoDB их засунуть с шардированием из коробки.


По данным планируется поиск и выборка по 200 - 300 тыс записей
20 авг 17, 11:52    [20736772]     Ответить | Цитировать Сообщить модератору
 Re: Работа с большими данными  [new]
Андрей Александрович.
Member

Откуда:
Сообщений: 44
mayton
Aleksandr Sharahov, на чем будешь писать? Delphi? C#?


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

Писать планирую на delphi
20 авг 17, 11:52    [20736775]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Программирование Ответить