Работа с большими данными

1. pisarevEV 8 18.10.17 15:31 Сейчас в теме
приветствую!
есть задача хранения (фактически без обработки) довольно больший объемов информации...
до 100млрд. записей на горизонте 10лет.
"запись" - строка (до 50символов), дата, число

источник данных - датчики на производстве

никаких алгоритмов обработки не предусматривается... только запросы к этим данным из "управленческой" 1С (УТ)...

какую использовать архитектуру для такой задачи?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 18.10.17 15:43 Сейчас в теме
3. TODD22 18 18.10.17 15:47 Сейчас в теме
(1)Может их агрегировать?
Вообще видел подобное и на Постгри и на Оракл.
Можете в одной базе не хранить все периоды. Делать на каждый период свою базу и хранить эти копии 10 лет.

Смотря какая обработка требуется.
А то можете рассмотреть хранение и не в базе данных если нет задач получения моментальных выборок со сложными отборами или например в nosql базе можно хранить.
Вы в УТ какие данные от оборудование хотите получать? Там же они в каком то уже обработанном виде нужны?
42. alex_sh2008 4 20.10.17 11:24 Сейчас в теме
(1)Форматированные текстовые файлы на файловом хранилище
4. herfis 499 18.10.17 16:05 Сейчас в теме
Любую архитектуру, кроме 1С.
Для снятия сырых данных с датчиков и записи их в СУБД лучше всего использовать что-то как можно более примитивное, зато шустрое и высоконадежное. Обычно от поставщиков оборудования уже есть нужные предложения. А в 1С сырые данные нафиг не нужны.
В 1С можно будет затягивать агрегаты при необходимости или вообще тупо фигачить внешние запросы.
softcom_1c; maxopik2; alex-l19041; +3 Ответить
13. pisarevEV 8 19.10.17 05:37 Сейчас в теме
(4) вот именно, нужно максимально простое, надежное и масштабируемое хранилище, к которому можно было бы обращаться из 1С штатными инструментами....
5. herfis 499 18.10.17 16:08 Сейчас в теме
На 1С тоже можно сделать. И даже будет работать. Только не нужно.
6. spezc 782 18.10.17 16:34 Сейчас в теме
7. pm74 199 18.10.17 16:58 Сейчас в теме
8. herfis 499 18.10.17 17:46 Сейчас в теме
Чуваку не нужны ни распределенные вычисления, ни распределенное хранение.
Банальный MSSQL должен вытянуть. Подумаешь, пара-тройка сотен записей в секунду и десяток-другой терабайт.
12. pisarevEV 8 19.10.17 05:34 Сейчас в теме
(8) я тоже склоняюсь НЕ к 1Скому хранению... кроме MSSQL какие еще могут быть вырианты?
15. herfis 499 19.10.17 07:24 Сейчас в теме
(12) Да любая "нормальная" СУБД должна вытянуть если говорить про запись и хранение. И не забывай еще про вопрос отказоустойчивости. Допустима потеря данных или нет. Нужен кластер, не нужен. Зеркалировать, не зеркалировать.
А в этом твоем "только запросы к этим данным из 1С" - вообще отряд дьяволов сидит. Писать - это пол-беды. Можно вообще в nul писать, если читать не нужно.
Ты же понимаешь, надеюсь, что "запросики" к такому объему данных - это не хухры-мухры?
Все очень сильно будет зависеть от профиля нагрузки, специфики запросов и требований к производительности.
Если типичные запросы будут покрывать данные за весь период, то скорее всего придется еще что-то сверху прикручивать.
Если данные заведомо не влезают в память, а результат нужен быстро - то чуда не произойдет. Нужны будут либо агрегаты в том или ином виде, либо в худшем случае - распределенные вычисления.
ЗЫ. Пожалуй, выше я погорячился, заявив что распределенные хранение и вычисления не нужны. Вполне может оказаться, что таки нужны. И тогда при худших раскладах SQL может оказаться не лучшим выбором.
16. pisarevEV 8 19.10.17 08:39 Сейчас в теме
(15) риски потерь данных я не анализирую
запросы...
возможны два варианта:
Вар.1:
выгрузка данных в "управленческую" 1С... здесь данные будут браться за кранею смену, т.е. глубина минимальна, объем выборки соответствеено тоже небольшой, но скорость здесь нужна...

Вар.2:
"расследование" аварий, форс-мажоров различных... скорость в этом случае не имеет значения...
запросы (поиск данных) могут быть по всему периоду хранения

думаю оба варианта не поставят неразрешимых проблем...
17. herfis 499 19.10.17 09:16 Сейчас в теме
(16) Ну, при таких раскладах можно хоть в файлики писать, как ниже предлагали. Каждую смену отдельным файликом. Довольно удобно, на самом деле.
18. pisarevEV 8 19.10.17 09:21 Сейчас в теме
(17) не... ну это уже совсем... все-таки должно быть что-то более "прогрессивное")
19. TODD22 18 19.10.17 09:28 Сейчас в теме
(18)"Файлики" это не "уже совсем". Это вполне оправданный подход для решения определённых задач хранения больших объёмов данных.
Прогрессивное берите СУБД и делайте на СУБД. Можете взять PostgreSQL и сделать хранение в ней как писал уже выше встречал такое на Постгри и на Оракл. Можете разделить производственные линии по разным базам например.

Или логировать все данные в файлики, а те данные что нужны для анализа в 1С можно отдельно грузить в какую то СУБД.

Например снимаете данные по температуре с 1000 датчиков и тд. Но в 1С вам нужны только данные по выпуску ГП с датчиков показывающих выпуск и расходу материалов. Тогда данные с датчиков температуры можете писать в "файлики", а данные по выпуску ГП в СУБД и из неё получать запросами.

Не понимая какие данные вам нужны для анализа и в каком объёме, можно дать только общие советы.
20. pisarevEV 8 19.10.17 09:41 Сейчас в теме
(19) данных для проектирования действителбно мало... пока только в самом общем виде архитектура обсуждается... спасибо за мнение в любом случае!
21. kuzev 47 19.10.17 09:46 Сейчас в теме
(20) Мы у себя несколько раз переделывали механизм хранилища (на MS SQL), т.к. менялись потребности бизнеса. Приходилось оптимизировать под чтение данных (запросы). Пока не попробуете несколько раз на живых данных, не поймете как оптимальнее.
22. herfis 499 19.10.17 10:14 Сейчас в теме
(18) Зачем? Инструмент подбирается под задачу. На файликах ты по сути собираешь свою СУБД под конкретную задачу. И если получается обойтись без велосипедов с квадратными колесами - то такое решение может быть намного более эффективным.
23. pisarevEV 8 19.10.17 10:48 Сейчас в теме
(22) есть негативный опыт потери таких файлов... в т.ч. по причине вредительства... представляется что контролировать базопастность данных, хранящихся в СУБД проще и надежнее, чем в файловой системе...
24. starik-2005 3039 19.10.17 12:42 Сейчас в теме
(23) ничто не мешает потерять любые файлики (в т.ч. и файлы СУБД). Если писать файлы будет отдельный процесс от отдельного пользователя, которому даны права на этот каталог и больше никому, то потерять файлы можно будет только при выходе из строя файловой системы, но тут и субд не спасет. А вот бэкап этих файлов будет происходить куда быстрее бэкапа субд, ибо можно эвридай это делать, отбирая файлы по дате.

В действительности, файловый вариант решает множество проблем, которые создают прочие варианты, при этом все "проблемы", которые видятся с первого взгляда, решаются куда проще. СУБД нужна для хранения связанных таблиц, индексов, туевой хучи всего прочего. Для решения данной задачи этого всего не надо.
herfis; TODD22; +2 Ответить
25. pisarevEV 8 19.10.17 13:25 Сейчас в теме
(24) а как например в варианте "файлов" контролировать целостность данных? положим через 5 лет таких файлов будет миллионы... как понять что за это время не потерялсь часть из них? или не вирусы их не "погрызли"? это ведь надо строить некие алгоритмы над полем этих файлов... по сути изобетать некий аналог процесса тестирования и исправления данных в 1С (если языеом 1С говорить...)
26. starik-2005 3039 19.10.17 13:28 Сейчас в теме
(25) а если я удалю часть строк из базы данных через DELETE table WHERE id LIKE XXX, то как я узнаю, что я удалил через дцать лет? Для этого архивирование есть - в архивах есть контрольная сумма, могут быть данные для восстановления и прочее. Прое потерять данные можно в любом хранилище - почитайте, сколько на форуме вопросов о том, как восстановить базу данных (хоть SQL, хоть файловую).
27. herfis 499 19.10.17 13:53 Сейчас в теме
(23) СУБД - это тоже файловая система. И от человеческого фактора она тоже не страхует.
Просто если у тебя в самом деле будет писать один процесс в одну логическую таблицу, то использование SQL СУБД явно избыточно. Основные плюшки зачем она нужна - это конкурентный доступ с обеспечением строгих требований ACID и универсальная модель доступа к данным (SQL). В данном случае тебя это не держит. Зато файлики ты можешь писать хоть каждый час новые, складывая в папочки по дням/месяцам/годам. И бэкапить удобно и шардить легко можно и map/reduce наколеночный прикрутить элементарно при необходимости.
Только писать эту систему желательно не на 1С и не одинэснику :) Чтобы не было глупостей вроде "ааа че-то сбойнуло и не пишется, ааа время перевели и все сломалось, ааа 1С лицензию потеряла и не запустилась"
28. pisarevEV 8 19.10.17 14:07 Сейчас в теме
(27) да, действительно потоков на входе не много (десятки), каждый генерит десятки записей в секунду, можно на каждый поток создать "папку" и писать в нее файлы с разрезанием по времени (например производственные смены)... и действительно можно найти "правильного" спеца который сможет все это создать, прикрутить контроль целостности, бэкапы, контроль доступа....
1Сник напишет запросы к файлам...
НО! хранилище получится 100% "наколеночным"... потерялся спец, и придется долго разбираться что и зачем в нем построено...
а если тоже самое на SQL, все таки там будет все более-менее прозрачно....

ну и вопрос... как обосновать заказчику почему мы отказываемся от "общепринятых" решений в пользу некоего эксклюзива ... это конечно не имеет отношения к теме, но в конечном счете может оказаться решающим вопросом...
30. herfis 499 19.10.17 14:45 Сейчас в теме
(28) Чем скульная база прозрачнее файловой структуры, на которую без всяких студио смотришь и сразу смекаешь что к чему? И какая разница, какой спец потеряется - писания в файлы или писания в SQL? По твоему описанию, это из тех систем, которые пишутся один раз и работают десятилетиями. При этом не требуя никакого middleware и потребляя минимум ресурсов на забытых всеми серверах с космическим uptime.
Заказчик только спасибо должен сказать за то, что теперь ему не нужны еще и DBA для этой задачи. И вообще, нам теперь за тебя еще и продавать? :)
44. oldfornit 20.10.17 11:42 Сейчас в теме
(12) Elasticsearch.
Отказоустойчивость, зеркалирование, адаптация под bigdata, простые интерфейсы взаимодействия
47. TODD22 18 20.10.17 11:49 Сейчас в теме
(44)Да но это поисковый движок, на сколько я знаю. Хотя и с функциями БД. Вроде искать там ничего не надо.
51. oldfornit 20.10.17 12:01 Сейчас в теме
(47) в первую очередь это отказоустойчивый за счет распределения (кластеризация и шардирование) движок для хранения больших массивов данных. Что с этими данными потом делать - дело десятое.
52. TODD22 18 20.10.17 12:04 Сейчас в теме
(51)В описании пишут что это в первую очередь поисковый движок, а потом уже распределение, кластеризация, шардирование и всё остальное.
61. oldfornit 23.10.17 14:03 Сейчас в теме
(52) не спорю. Но как можно организовать беспроблемный поиск без надежной и отказоустойчивой системы хранения?
62. TODD22 18 23.10.17 14:06 Сейчас в теме
(61)
Но как можно организовать беспроблемный поиск без надежной и отказоустойчивой системы хранения?

Наверное какими то другими средствами. Когда поиск сам по себе, надёжная система хранения сама по себе....
53. herfis 499 20.10.17 12:09 Сейчас в теме
(51) Вроде как наоборот. Центральная концепция - это распределенный полнотекстовый индекс. То, что его можно использовать в качестве своеобразной nosql БД - как бы побочный эффект. Авторитетно заявляю, как только что внимательно прочитавший википедию :)
Да и из того что я слышал краями ушей - вроде как его все-таки чаще используют "поверх" чего-то.
9. CheBurator 3119 18.10.17 21:24 Сейчас в теме
влезет в 6 терабайт примерно...
10. starik-2005 3039 18.10.17 21:30 Сейчас в теме
Просто текстовый дописываемый файл, если только хранить. Прикрутить к нему индекс по дням, который заполнять раз в сутки после окончания формирования очередного файла. Если число - это уникальный идентификатор датчика, а строка - считанные данные, то лучше сразу писать столько файлов, сколько уникальных датчиков имеется, чтобы разделить данные и ускорить поиск в них.
11. CheBurator 3119 19.10.17 02:24 Сейчас в теме
(10) на таком количестве файлов не загнется?
14. TODD22 18 19.10.17 06:16 Сейчас в теме
(11)
на таком количестве файлов не загнется?

Кто загнутся должен на таком количестве файлов?
29. pisarevEV 8 19.10.17 14:11 Сейчас в теме
в целом конечно вариант файло имеет право на жизнь...
31. ADirks 186 19.10.17 15:20 Сейчас в теме
(0) Почитай про всякие NoSQL. Похоже, самое оно для такой задачи.
32. herfis 499 19.10.17 15:37 Сейчас в теме
(31) Похоже, ты читал, раз советуешь :) Подскажи, какая именно подойдет (они же довольно сильно отличаются), а главное - чтобы какую именно проблему решить?
33. ADirks 186 20.10.17 06:39 Сейчас в теме
Ну, я читал только обзоры, и то немножко. Из обзоров понятно, что такие СУБД обеспечивают очень быструю и надёжную запись в БД, особенно когда порции данных такие вот коротенькие. Ну и отсутствие структурированности данных в данном случае тоже хорошо - пиши что прилетело, и не парься.
34. herfis 499 20.10.17 10:23 Сейчас в теме
(33) Так по скорости и надежности ТС и SQL устроит. Плюс данные примитивны и структурированы. Ни один из плюсов nosql ему в текущей постановке не уперся. В чем ему профит заморачиваться с незнакомой СУБД? Разве что повысить квалификацию за счет заказчика.
35. TODD22 18 20.10.17 10:29 Сейчас в теме
(34)
Так по скорости и надежности ТС и SQL устроит.

ну почему же... есть например couchDB. Она вполне под задачи ТС подошла бы как мне кажется, только я с ней поверхностно знаком и не имею большого опыта эксплуатации, но по надёжности она как хранилище будет лучше чем SQL, потому что нет структуры данных и при частичной потере реляционная структура станет не работоспособной, в отличие от "ключ-значение".
Но это так сказать в теории :)
37. herfis 499 20.10.17 10:43 Сейчас в теме
(35) Как уже обсуждали выше, под задачу ТС в том виде, как он ее озвучил, даже текстовые файлики отлично подходят. Коуч тоже подойдет. И монга. И куда ни плюнь, кроме разве что колоночных. Но аргументы за надежность vs SQL прозвучали для меня странновато.
38. TODD22 18 20.10.17 10:48 Сейчас в теме
(37)
Но аргументы за надежность vs SQL прозвучали для меня странновато.

В чём именно странность?
39. herfis 499 20.10.17 11:04 Сейчас в теме
(38) Очень много лукавости и умолчаний скрывается в этом утверждении, как по мне.
1) SQL не теряет работоспособность прям напрочь прям при любых бяках в базе
2) уверен, что коуч не останется работоспособной при ЛЮБЫХ бяках в базе, но вполне могу допустить, что она более "живуча"
3) в SQL есть эффективные средства восстановления данных, которые эффективны не в последнюю очередь именно потому, что данные имеют структуру
4) бяка в базе - это разовые форсмажоры, связанные с хадваре, которые так или иначе требуют немедленного вмешательства. Удовольствие иметь в процессе "полуживую" базу, а не остановленную - весьма сомнительное. Когда лучше одно, когда - другое.
5) очень часто стратегия "упасть" как можно раньше при наличии проблемы - выигрышная
40. TODD22 18 20.10.17 11:10 Сейчас в теме
(39)
Очень много лукавости и умолчаний скрывается в этом утверждении

нет там никаких лукавостей и умолчаний....
Коуч разрабатывался на сколько помню как очень надёжное хранилище пар "ключ-значение". Так как база структуры не имеет то по сути при повреждении части записей на диске остальные записи остаются работоспособными чего нельзя сказать о таблицах.
Средства восстановления и тд это хорошо, но речь не про это.
41. herfis 499 20.10.17 11:24 Сейчас в теме
(40) Ок, ок. А то мы по второму кругу пошли.
Я всего лишь хотел сказать, что не всегда это хорошо. Если не подстраховаться комплексом дополнительных мер, то нет ничего хорошего в том, что ты продолжаешь писать в разваливающуюся базу. При этом пополнительные меры для обеспечения надежности и для SQL есть.
43. pisarevEV 8 20.10.17 11:40 Сейчас в теме
(40) простите, что значит "коуч" и "монга"?
45. DenisCh 20.10.17 11:43 Сейчас в теме
(43)
что значит "коуч" и "монга"?


CouchDB и MongoDB
36. TODD22 18 20.10.17 10:30 Сейчас в теме
(34)
Разве что повысить квалификацию за счет заказчика.

Что то же очень хорошо.
46. pisarevEV 8 20.10.17 11:47 Сейчас в теме
48. herfis 499 20.10.17 11:55 Сейчас в теме
ОФФ. А как вернуть дефолт на линейное отображение комментариев по времени, вместо дерева? :)
49. TODD22 18 20.10.17 11:57 Сейчас в теме
(48)Сверху над первым комментом есть кнопка сортировки и рядом кнопка "Сохранить"
50. herfis 499 20.10.17 11:59 Сейчас в теме
54. pisarevEV 8 23.10.17 12:34 Сейчас в теме
поступила вводная: в БД должен быть механизи автоматической печати...
т.е. при поступлении внешей команды (сигнал от датчика), некий алгорим, должен делать выбору данных (небольшую), формировать печатную форму и отправлять на принтер... это все без участия человека...

я так понимаю вариант с файликами теперь отпадает...
55. TODD22 18 23.10.17 12:37 Сейчас в теме
(54)
я так понимаю вариант с файликами теперь отпадает...

Нет не правильно понимаете.
Вам нужно как минимум абстрагировать функционал, от хранения. Хранится может и в СУБД и файликах. Вопрос в том какое приложение получает сигнал и вот оно уже читает откуда то данные и что то с ними делает.
56. pisarevEV 8 23.10.17 13:04 Сейчас в теме
Выбрать "приложение получающее сигнал" мне и нужно... с хранением все более менее есно... а вот с этим "приложением" мне теперь не очень понятно... я собственнь "1Сник", со всеми вытекающими)
57. DenisCh 23.10.17 13:06 Сейчас в теме
(56)ты уже решил, как хранить будешь?
Если скуль нормальный - то триггер, вызывающий что нужно. Или обработка ожидания, смотрящая в таблицу.
Если файлы - то внешняя программа с подпиской на появление в каталоге нужного файла, или опять же обработка ожидания с НайтиФайлы()
58. pisarevEV 8 23.10.17 13:13 Сейчас в теме
врядли SQL для хранения... либо какой-нибудь noSQL, либо файлики... теперь основной вопрос в "командном" приложении.... можно конеч на базе 1С... но как-то криво смотрится...
59. ADirks 186 23.10.17 13:13 Сейчас в теме
А я бы с такой постановкой сначала посмотрел, как эти самые датчики умеют сигналы посылать. Способов то мильён.
60. pisarevEV 8 23.10.17 13:16 Сейчас в теме
согласен... пока нет уменя инфы по датчикам... все пока в пролоскости разговоров... пока есть желание хотя бы общую концепцию понять... как в принципе "правильно" решать такие задачи... чуствую для 1С здесь места нет...
63. herfis 499 23.10.17 14:41 Сейчас в теме
(60) С очень большой долей вероятности 1С не подойдет для снятия информации с датчиков. То есть в любом случае будет другая программа, которая это делает и куда-то пишет.То есть можешь вообще сильно не зацикливаться на деталях. Так как реализовывать их будешь не ты :)
А когда найдется спец на эту задачу, то он как-нибудь и без консультаций одинэсников обойдется. Сейчас нужно сосредоточиться на полной, подробной и понятной постановке задачи. Потому что с этим, судя по всему, большие проблемы.
64. alex_sh2008 4 23.10.17 15:52 Сейчас в теме
(63)Нужно в первую очередь исходить из интерфейсов оборудования, у меня как то была задача, у оборудования был Net интерфейс и описание как связаться с этим оборудованием, я накидал програмку на c++ и поставил ее в планировщик на сервере, опрашивала все железки и считывала нужную информацию, весь этот хлам писался в dbf файлы, на каждый день по 1 файлу.
65. pisarevEV 8 24.10.17 05:30 Сейчас в теме
70. alex_sh2008 4 24.10.17 08:12 Сейчас в теме
(65)Ну тогда проблем вообще не вижу, пишите многопоточную службу работающую по принципу стека или очереди и пишите эти данные куда вдумается.
67. pisarevEV 8 24.10.17 07:02 Сейчас в теме
похоже что-то подобное надо делать... нужен OPC клиент... может он уже есть в 1С?
68. pisarevEV 8 24.10.17 07:10 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот