Нужен совет ..!

  • Автор темы Saint
  • Дата начала

Saint

Новичок
ЗАБАНЕН
Регистрация
7/9/16
Сообщения
26
Репутация
20
Реакции
34
RUB
0
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Приветствую форумчане!
Не нашел более подходящего места, куда всунуть тему, прошу сильно не пинать!

Собственно сабж:

1. Есть два массива данных со значениями, назовем их М1 и М2 одно значение имеет в своем составе набор A-Z, a-z, 0-9, других символов нет, длина значения может быть разная.
2. В каждом массиве миллионы значений (М1 больше, М2 меньше, по объему в пару десятков раз) но и их объем очень быстро растет.
3. В настоящий момент, есть копия значений обоих массивов и содержутся в десятках текстовых файлов, в стиле: одно значение=одна строка.

Задача:
Искать одинаковые значения из М2 в М1 и выводить найденное совпадение.

В настоящий момент данные действия провожу в Excel, разбил все на 4 части и пляски с бубном.))
Когда значений было немного, все бвло нормально.
Но когда перевалило за 500 тыщ. в M1 и 80 тыщ. в М2, Excel задохнулся, на обработку уходит по полчаса, а таких действий нужно 4 и плюс куча копипаста.

Возникла идея, собрать оба массива в БД и в какое-то ПО, которое сможет более менее быстро эту задачу выполнять, вопрос в какое?
Также, необходим импорт данных из TXT.
Работа с оным локальная, и желательно, чтобы так и оставалось. В крайнем случае можно повесить БД на серв, который в локсети.

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

Ну вот, вроде все описАл, возможно кто встречался с подобным, в чем это можно реализовать?
Буду рад любым мыслям!
 
Если честно, несколько раз перечитал, но так и не понял, что же требуется. "Искать одинаковые значения из М2 в М1 и выводить найденное совпадение." - это как? Если значения одинаковые, то зачем искать? И что выводить? Порядковые номера? Или важен лишь факт того, что совпадения есть? Написать то можно хоть на чём, да хоть на 1С:Предприятие!


upd: От неча делать сваял конфу в 1С. Есть два справочника М1 и М2. Есть отчёт поиска в справочнике М1 по заданному значению М2. Есть две обработки по импорту М1 и М2 из текстовиков. На всё ушло минут 15-20.
 
Последнее редактирование:
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Если честно, несколько раз перечитал, но так и не понял, что же требуется. "Искать одинаковые значения из М2 в М1 и выводить найденное совпадение." - это как? Если значения одинаковые, то зачем искать? И что выводить? Порядковые номера? Или важен лишь факт того, что совпадения есть? Написать то можно хоть на чём, да хоть на 1С:Предприятие!
Думаю, все понятно объяснил, оказывается нет.
1. Затем и искать, чтобы найти, имеется ли дублирование значений в обоих массивах.
2. Выводить это самое значение, которое(ые) присутствуют в обоих массивах.

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

Спасибо, обязательно гляну.
 
Т. е. берём первое значение массива М2 и ищем его в полном массиве М1, потом берём второе и снова ищем и т. д.? Совпадения просто выводим и всё? Поправил в своей 1С конфе. Мне просто интересно, при каких объемах данных заткнётся 1С? Физически ограничение у дбф - 2Гб.
p.s.: Теоретически миллионов 50 записей влезет в объем при условии что средняя длина строки равна 40 байт.
 
Последнее редактирование:
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Т. е. берём первое значение массива М2 и ищем его в полном массиве М1, потом берём второе и снова ищем и т. д.? Совпадения просто выводим и всё?
Да, именно так, других действий не требуется!
Средняя длина в 40 байт это много, смело можно снизить до 30.
2Гб - думаю будет маловато, забьется за пару тройку недель.
В целом БД будет весить не более 150-200Гб (по моим подсчетам). Может знаете что подобное?
Поглядываю на мускул, там 10Гб ограничение, но вроде как можно снять.
Да и нужен более-менее вменяемый десктопный интерфейс для мускуля - подскажете?
 
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Ошибся в подсчетах, слегка перегнул, конечный объем базы не должен превысить 100Гб.
 
То есть предполагается,что массивы будут постоянно расти?
 
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
То есть предполагается,что массивы будут постоянно расти?
Да, М1 разрастется примерно до 100Гб, а М2 возможно, со временем, но не так активно как М1.
Собстно, по этой причине и вынужден слезать с Экселя, ибо 800-900 тыщ. ячеек на листе М1 и 80-90 тыщ. на листе М2 для него уже тяжко, на моем FX-8350 задумывается надолго при 100% загрузке всех 8 ядер.
Требуется что-то из ПО, более заточенное под сею задачу.
 
Да, М1 разрастется примерно до 100Гб, а М2 возможно, со временем, но не так активно как М1.
Собстно, по этой причине и вынужден слезать с Экселя, ибо 800-900 тыщ. ячеек на листе М1 и 80-90 тыщ. на листе М2 для него уже тяжко, на моем FX-8350 задумывается надолго при 100% загрузке всех 8 ядер.
Требуется что-то из ПО, более заточенное под сею задачу.
Тогда только компилированное ПО+SSD. Скрипты не потянут такие объемы. В принципе,найти кодера на C++\C#,задача несложная.А что-то из готово-хз даже,надо гуглить:)
 
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Тогда только компилированное ПО+SSD. Скрипты не потянут такие объемы. В принципе,найти кодера на C++\C#,задача несложная.А что-то из готово-хз даже,надо гуглить:)
Нет, разумеется, про скрипты и речи не идет.
Пока склоняюсь к установке мускул сервера, чтоб тащить весь объем и отдельно десктопный клиент, чтоб юзать этот объем по ЛС. Вот только с последним еще не определился, придется либо гуглить, либо самому тестить известные клиенты на предмет необходимого функционала. Или, может, здесь кто подскажет, какой выбрать. :)
 
Нет, разумеется, про скрипты и речи не идет.
Пока склоняюсь к установке мускул сервера, чтоб тащить весь объем и отдельно десктопный клиент, чтоб юзать этот объем по ЛС. Вот только с последним еще не определился, придется либо гуглить, либо самому тестить известные клиенты на предмет необходимого функционала. Или, может, здесь кто подскажет, какой выбрать. :)
Mysql и такой объем? Чет не. Да как таковой спец проги не надо. Парсится текстовик,всё заносится в базу,из базы уже запросы делаются. Для c++ делов немного.
 
СУБД готовых очень много. Писать с нуля даже ничего не нужно. В той же 1С77 можно на MSSQL перейти. Либо сразу на 1С83, но она на порядки тяжелее по потреблению ресурсов. А так можно погуглить следующее - minq dbvisualizer, cecima windesign, allfusion erwin data modeller, да миллион их. И да, про скрипты. Вот тут то и надобно их использовать. Утверждение о том, что скрипты не потянут, а нужно только компилированное что-то мягко говоря неверно. Тот же Перл и ПХП прекрасно с БД работают. С тем же Ораклом например. В этой связке напрягается сама Оракл, а мы лишь посылаем запрос и получаем ответ, не более того.
 
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Хорошо, спасибо всем. Подумаю над вариантами.
А пока беру тайм-аут.
 
Если вы планируете сделку с его участием, мы настоятельно рекомендуем вам не совершать ее до окончания блокировки. Если пользователь уже обманул вас каким-либо образом, пожалуйста, пишите в арбитраж, чтобы мы могли решить проблему как можно скорее.
Товарищи, проблема решена!

MySQL 5.7,
М1 - 18 млн. записей,
М2 - 80 тыщ. записей,
Время выполнения запроса 0,26 сек.

Результат превысил все ожидания в сотни раз.
Всем спасибо за участие!
 
Сверху Снизу