По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:

В этой статье расскажем о различных концепциях и стратегиях, которые реализуют многие организации для защиты своих активов как от внутренних, так и от внешних киберугроз.
Вы узнаете об этих трех основных принципах, и о том, как они используются в различных организациях. Кроме того, вы узнаете о ключевых терминах безопасности и моделях контроля доступа.
При подключении устройства к сети и Интернету, организации открывают двери для хакеров, которые могут проникнуть в их сеть и нанести ущерб. Есть много организаций, которые используют только брандмауэр в своей сети и поэтому думают, что и их внутренняя сеть, и пользователи защищены от угроз в Интернете. Брандмауэр, как единственное сетевое устройство, развернутое между внутренней сетью и Интернетом, — это просто первый уровень безопасности для всей организации. Многие люди задаются вопросом: а не достаточно ли брандмауэра для фильтрации вредоносного входящего и исходящего трафика?
Много лет назад ответ был бы однозначно «да». Однако, поскольку хакеры всегда ищут новые стратегии для проникновения в сеть, мы не можем полагаться только на один уровень безопасности для защиты наших активов. Ответ на этот вопрос уже не является однозначным «да» просто потому, что существует много типов трафика, которые используют небезопасные сетевые протоколы для обмена сообщениями между источником и получателем.
Ниже приведены лишь некоторые из многих вопросов, которые должен задать специалист по кибербезопасности:
Осуществляет ли организация активный мониторинг сообщений Domain Name System (DNS) на предмет угроз?
Есть ли в организации какие-либо решения для обеспечения безопасности, защищающие входящие и исходящие сообщения электронной почты компании?
Если в сети происходит кибератака, существуют ли системы для упреждающего блокирования и оповещения отдела информационных технологий?
Есть ли в организации специальная группа или человек по безопасности для управления общей безопасностью всего предприятия?
Существуют ли какие-либо политики безопасности и технические средства контроля для защиты внутренней сети?
Многие поставщики систем безопасности используют маркетинговые стратегии и используют модные слова (buzzwords), чтобы повлиять на потенциальных клиентов для приобретения их устройств безопасности «все в одном». Ключевой момент, который упускают многие не осведомленные клиенты, — это то, как решение или продукт безопасности будет защищать всех пользователей и все типы трафика, защищать их при использовании небезопасных протоколов и так далее. Примером может служить использование endpoint protection (защиты конечных точек). Вы можете рассматривать это решение как антивирусное программное обеспечение с централизованным управлением для администратора. Хотя многие решения для защиты от вредоносных программ конечных точек предлагают расширенные функции. Это все еще первый уровень безопасности, который просто защищает хост.
Не все решения для защиты конечных точек или антивирусы, защищают от угроз, связанных, например с электронной почтой. Проще говоря, организация не может полагаться только на один подход для защиты своих активов, ей нужен многоуровневый подход, известный как Глубокая защита (Defense in Depth - DiD).
Стратегия DiD подразумевает, что один уровень безопасности не должен использоваться в качестве единственной меры противодействия кибератакам. Если этот единственный уровень не сможет защитить сеть, тогда все (активы) будут открыты для взлома хакерами. В DiD реализован многоуровневый подход для защиты всех активов от различных типов кибератак, где, если один уровень не может защитить актив, то есть другой уровень для обеспечения безопасности.
Эту тактику наслаивания придумали в Агентстве национальной безопасности (NSA) как комплексный подход к информационной и электронной безопасности. А изначально - это военная стратегия, которая направлена на то, чтобы заставить атакующего тратить как можно больше времени на преодоление каждого уровня защиты, нежели предотвратить наступление противника.
Концепция Defense in Depth делит организацию защиты инфраструктуры на три контролируемые части:
Физическая: сюда относятся все меры по ограничению физического доступа к ИТ-инфраструктуре неавторизованных лиц. Например, охранник офиса, системы СКУД, камеры видеонаблюдения, сигнализация, телекоммуникационные шкафы с замками и так далее.
Техническая: сюда относятся все хардварные и софтовые средства защиты информации, призванные контролировать сетевой доступ к объектам информационной системы, межсетевой экран, средства антивирусной защиты рабочих станций, прокси-серверы, системы аутентификации и авторизации.
Административная: сюда относятся все политики и процедуры информационной безопасности, принятые в организации. Данные документы призваны регулировать управление защитой, распределение и обработку критичной информации, использование программных и технических средств в компании, а также взаимодействие сотрудников с информационной системой, сторонними организациями и другими внешними субъектами.
Многоуровневый подход -это как защита короля в его замке. Если произойдет нападение, захватчикам потребуется пройти несколько уровней обороны, включая стражей на входе и другие препятствия, прежде чем они смогут добраться до короля (актива).
Чтобы лучше понять важность DiD, давайте углубимся в изучение трех основных принципов информационной безопасности, так называемой триады CIA:
Конфиденциальность (Confidentiality)
Целостность (Integrity)
Доступность (Availability)
Каждый принцип играет жизненно важную роль в обеспечении информационной безопасности любой организации. В следующем подразделе вы узнаете о характеристиках конфиденциальности, целостности и доступности, а также о том, как они используются в отрасли для обеспечения безопасности наших сетей.
Конфиденциальность
Поскольку все больше людей подключаются к сетям и обмениваются информацией, будь то их частная сеть дома, корпоративная сеть в офисе или даже Интернет, конфиденциальность является серьезной проблемой.
Каждый день организации генерируют новые данные, отправляя и получая сообщения между устройствами. Представьте себе организацию, которая использует электронную почту в качестве единственной платформы обмена сообщениями. Каждый человек создает сообщение электронной почты, которое является данными, и эти данные используют некоторое пространство для хранения в локальной системе. Когда адресат получает электронное письмо, оно сохраняется на компьютере получателя. Важно, чтобы сообщение получили только те, кому оно адресовано, посторонние лица его увидеть не должны.
Когда эти данные передаются по сети, их также можно перехватить. Поэтому специалист по безопасности также должен принимать во внимание следующие вопросы: является ли соединение безопасным? Является ли протокол связи безопасным? Является ли сеть безопасной?
Конфиденциальность (Confidentiality) гарантирует, что сообщения и другие данные будут храниться в тайне от посторонних лиц или устройств. В области информационных технологий конфиденциальность реализуется в виде шифрования данных. Люди используют устройства для выполнения задач, будь то отправка электронной почты, загрузка файла или даже отправка сообщения в мессенджере со смартфона. Важно всегда защищать эти сообщения.
Данные обычно существуют в следующих состояниях:
Данные в состоянии покоя
Данные в движении (транзит)
Используемые данные
Данные в состоянии покоя — это данные, которые не используются ни приложением, ни системой. В данный момент они хранятся на носителях, таких как жесткий диск (HDD) в локальной или удаленной системе. Когда данные находятся в состоянии покоя, они уязвимы для злоумышленников, пытающихся либо украсть, либо изменить их. Специалисты по безопасности реализуют как методы аутентификации, так и алгоритмы шифрования для защиты любых данных в состоянии покоя. Примером может служить использование BitLocker в операционной системе Microsoft Windows 10, которая позволяет администратору создавать зашифрованный контейнер, а затем пользователь может поместить файлы в эту специальную область памяти и заблокировать ее.
После того, как содержимое BitLocker заблокировано (закрыто) пользователем, и контейнер, и его содержимое шифруются. Следовательно, доступ предоставляется только в том случае, если пользователь предоставляет правильные учетные данные для открытия и расшифровки содержимого. Если злоумышленник украдет зашифрованный контейнер, он не сможет просмотреть содержимое из-за шифрования данных.
Данные в движении определяются как данные, которые передаются между источником и пунктом назначения. Представьте, что есть сотрудники, которые работают дистанционно или работают в удаленном месте вдали от офиса. Этим людям может потребоваться часто подключаться к корпоративной сети для доступа к сетевым ресурсам, например, при доступе или работе с документами, находящимися на файловом сервере. Как специалисты в области кибербезопасности, мы должны быть осведомлены о том, какие типы защиты или механизмы безопасности существуют для защиты данных, передаваемых между устройством пользователя и файловым сервером. Кроме того, устройства отправляют и получают сообщения почти каждую секунду, и некоторые из этих сообщений обмениваются с использованием небезопасных протоколов, что позволяет злоумышленнику перехватывать сообщения (данные) по мере их передачи по сети. Если данные передаются по сети в незашифрованном формате, злоумышленник может увидеть все содержимое в виде открытого текста и собрать конфиденциальную информацию, такую как логины и пароли.
Это всего лишь несколько возможных ситуаций, которые могут возникнуть, когда данные находятся в движении. Некоторые рекомендуемые действия заключаются в том, чтобы всегда, когда это возможно, использовать защищенные сетевые протоколы и гарантировать, что удаленные сотрудники, используют виртуальную частную сеть (VPN) для шифрования трафика между устройством пользователя и корпоративной сетью.
Чтобы лучше понять необходимость VPN, представьте, что организация имеет несколько филиалов и хочет «расшарить» ресурсы из головного офиса в удаленный филиал. Использование Интернета небезопасно, особенно для передачи корпоративных данных между филиалами. Одним из решений может быть использование Wide Area Network (WAN), предоставляемой интернет-провайдером (ISP). Если организация решает использовать WAN, это означает, что за эту услугу придется платить, а для некоторых компаний это решение может оказаться не по карману. В качестве альтернативы, если организация имеет подключение к Интернету и брандмауэры находятся в каждом офисе, специалист по безопасности может настроить VPN между двумя устройствами брандмауэра. Этот тип VPN известен как site-to-site VPN.
На следующем рисунке показано представление site-to-site VPN:
Как показано на рисунке, site-to-site VPN устанавливает безопасное зашифрованное соединение между головным офисом и удаленными филиалами через Интернет. Следовательно, любые сообщения, которые перемещаются между офисами, шифруются и отправляются через туннель VPN, защищая сообщения от неавторизованных пользователей.
Существует также другой тип VPN - с удаленным доступом (remote access VPN). Этот тип позволяет пользователю установить VPN-туннель между конечным устройством, таким как ноутбук, и брандмауэром организации. Этот тип VPN позволяет сотрудникам, работающим дома или на ходу, безопасно подключаться к сети организации и получать доступ к сетевым ресурсам. Имейте в виду, что на устройстве сотрудника должен быть установлен VPN-клиент, который используется для установления безопасного соединения между компьютером и корпоративным брандмауэром.
На следующем рисунке приведен пример VPN с удаленным доступом:
Используемые данные — это данные, к которым в данный момент обращается или использует приложение. В этом состоянии данные наиболее уязвимы. В качестве примера используемых данных представьте, что вы открываете PDF-документ с помощью приложения для чтения PDF-файлов. Прежде чем приложение сможет успешно открыть файл PDF, документ необходимо расшифровать, если файл защищен паролем. После ввода правильного пароля документ будет представлен пользователю в незашифрованном виде. Важно обеспечить постоянную безопасность системы и приложений, которые обращаются к данным и/или используют их.
Таким образом, конфиденциальность — это защита ваших активов от посторонних лиц или устройств.
Целостность
Целостность (Integrity) играет важную роль в нашей повседневной жизни, это степень сформированности, собранности, проявление гармонии соотношения и взаимодействия частей. Вышло немного по-философски, но тот же принцип необходим и в сети. Представьте, что вы получили письмо от друга через местное отделение почты и открыв его, кажется, что с его содержимым все в порядке. Как получатель, вы могли бы предположить, что содержимое письма осталось неизменным в процессе доставки, но как вы можете проверить, было ли содержимое изменено человеком или устройством по пути? В сети очень важно обеспечить, чтобы данные или сообщения не изменялись в процессе передачи между источником и получателем.
В кибербезопасности используются специальные алгоритмы хеширования, чтобы помочь пользователям и устройствам проверить, было ли сообщение изменено или нет при его передаче. Алгоритмы хеширования создают односторонний криптографический хэш (дайджест, он же контрольная сумма), который является математическим представлением сообщения. Это означает, что только это сообщение может выдавать одно и то же хэш-значение. Алгоритмы хеширования создают одностороннюю функцию, которая делает практически невозможным изменение и определение содержимого самого сообщения.
На следующем рисунке показан процесс хеширования сообщения:
Как показано на рисунке, сообщение проходит через криптографический алгоритм, который создаёт одностороннюю хэш-функцию сообщения. Когда пользователь или устройство хочет отправить сообщение адресату, и сообщение, и его хеш-значение упаковываются вместе и отправляются по сети. Когда получатель получает входящее сообщение, он выполняет свою собственную функцию хеширования сообщения и вычисляет его хеш-значение.
Затем получатель сравнивает хеш-значение, полученное от отправителя, с хеш-значением, которое он высчитал. Если оба значения хеш-функций совпадают, это означает, что сообщение не было изменено во время передачи и целостность сохранена. Однако, если хэши не совпадают, это указывает на то, что сообщение было подвергнуто изменению, и получатель просто удалит его.
Помимо этого, хэширование также помогает убедиться в том, что сообщение не было искажено в результате каких-либо сбоев или неполадок в сети.
Доступность
Существуют типы кибератак, которые блокируют или затрудняют доступ законных пользователей к ресурсу. Другими словами, злоумышленники пытаются нарушить доступность (availability) данных и ресурсов. В области кибербезопасности доступность гарантирует, что данные и ресурсы всегда доступны для пользователей и систем, которым разрешен доступ к этим ресурсам.
Простым примером кибератаки, которая может быть использована для нарушения доступности сети, является атака «распределенный отказ в обслуживании» Distributed Denial of Service (DDoS). Этот тип атаки запускается из нескольких географических точек и нацелен на одну систему или сеть. Злоумышленник направляет к объекту атаки огромное количество легитимных запросов или другого типа трафика, в результате чего, система перегружается и становится неспособной обработать запросы от других пользователей. Цель состоит в том, чтобы сделать целевую систему или сеть непригодными для использования или недоступными для других пользователей.
Cloudflare (www.cloudflare.com) обеспечивает неограниченную защиту от DDoS-атак для пользователей. Администратор может перенести свои записи DNS в Cloudflare для управления службами DNS. Таким образом, Cloudflare находится между общедоступным сервером и остальной частью Интернета. Если на ресурс будет направлен DDoS-трафик из любой точки мира, он должна будет проходить через сеть Cloudflare, что смягчит атаку.
Возможно вы считаете, что для злоумышленников важно, чтобы сетевые ресурсы и данные были всегда доступны, чтобы их можно было взломать или украсть. Но на самом деле существуют злоумышленники, цель которых - сделать так, чтобы эти ресурсы не были больше доступны для пользователей.
Просто представьте что злоумышленник взломает систему управления энергосистемой вашего города или района. Если хакеру удастся отключить эту систему, то не будет электричества, и это затронет большинство потребителей и организаций. В таких ситуациях важно, чтобы специалисты внедрили меры безопасности, которые смогут защитить критически важные процессы, системы и сети от взлома.
Объединение трех принципов
Некоторые организации ставят одни принципы выше других. Например, компания может больше внимание уделять на защите своих данных с помощью различных систем аутентификации и шифрования. Этот принцип фокусируется на конфиденциальности. Сосредоточение внимания на одном компоненте, таком как конфиденциальность, в большей степени, чем на других, повлечет меньшее внимание к другим - целостности и/или доступности.
Вы можете задаться вопросом: и в чём здесь проблема? Представьте себе, что организация применяет самые строгие меры безопасности для предотвращения любого несанкционированного доступа к своим системам и сети. Чтобы авторизованный пользователь мог получить доступ к этим ресурсам, ему необходимо будет предоставить, возможно, несколько проверок своей личности, например, при многофакторной аутентификации (MFA), и даже пароли для открытия файлов. В результате доступ к ресурсам будет усложнен для всех, включая авторизованных пользователей, поэтому доступность немного пострадает.
На следующем рисунке показана триада принципов и точка фокусировки в центре:
Ключевой момент заключается в том, чтобы всегда обеспечивать баланс при реализации конфиденциальности, целостности и доступности в любой системе и сети. Важно уделять одинаковое внимание всем основным направлениям просто для того, чтобы не было недостатка ни в одном аспекте информационной безопасности.

Весь шум сосредоточен вокруг больших данных. И молодые, и опытные компании вовсю изучают новый подход к решению проблем с помощью «больших данных».
Но что такое эти большие данные? И как можно воспользоваться растущим спросом на знания и технологии, касающиеся больших данных?
Данные – это информация. Большие данные – это много информации. Ключевыми различиями между просто данными и большими данными заключается в объеме, скорости и многообразии. Как правило, большие данные – это более подробная информация с большим количеством отдельных компонентов, которые собираются за более короткий период времени. Источники больших данных часто являются новыми, но могут охватывать и более старые потоки данных.
В наше время мы создаем больше данных, чем когда-либо прежде. Эти данные содержат ценную информацию, которую мы можем использовать для улучшения различных систем и процессов. Специалисты по обработке данных, аналитики и инженеры собирают и анализируют данные для того, чтобы сделать обоснованные и полезные выводы.
Далее мы более подробно рассмотрим большие данные, а также технологии, которые лежат в их основе, проблемы их использования и многое другое.
Примеры больших данных
Как мы уже говорили ранее, большие данные содержат ценную информацию. Результаты анализа этих данных помогают компаниям лучше обслуживать своих клиентов и зарабатывать больше денег.
Именно из-за этого большие данные часто используют в маркетинге. Многие из наших действий в Интернете отслеживаются, от нашей активности в социальных сетях до наших покупательских привычек. Маркетологи используют эти данные для таргетированной рекламы, продвижения товаров и услуг, соответствующих вашим интересам.
Большие данные также используются в сфере здравоохранения. Вспомните хотя бы все эти устройства, которые мы сегодня используем, от Apple Watch до Fitbits. Эти устройства способны отслеживать частоту сердечных сокращений, дыхание, режим сна и многое другое – и даже предупреждать вас о любых изменениях, которые вас интересуют. Кроме того, врачи могут использовать данные с этих устройств для создания более полных профилей здоровья и для предоставления лучшего лечения для своих пациентов.
Примеры больших данных можно найти в транспортной и автомобильной отраслях. Беспилотные автомобили и грузовики используют данные о погоде и дорожных условиях, информацию о транспортных средствах и пешеходах и многое другое для повышения безопасности и эффективности.
Как вы можете видеть, большие данные обладают огромным потенциалом, способным улучшить наше общество. Но прежде чем использовать большие данные, их необходимо обработать.
Обработка больших данных
Так как большие данные очень обширны и детальны, их необходимо обработать, прежде чем анализировать для получения информации. Процесс обработки включает в себя сбор и сравнение данных их нескольких источников, их очистку от ошибок или дубликатов и многое другое.
После того, как большие данные будут обработаны, специалисты по обработке данных просматривают их в поисках любых значимых закономерностей. Очень часто этот процесс основан на машинном обучении. Затем используются методы визуализации данных, чтобы упростить понимание результатов анализа. Также немаловажную роль в анализе данных играет статистика, так как помогает понять взаимосвязь между данными и вероятными результатами.
Языки программирования больших данных
За инструментами, которые специалисты по обработке данных используют для сбора, обработки, анализа и визуализации больших данных, стоит несколько языков программирования. Каждый из языков имеет свои собственные преимущества. Вот некоторые из наиболее популярных языков программирования, используемых для больших данных:
Python
Python - простой язык для изучения и один из самых популярных языков, используемых в науке о данных. Поэтому существует множество библиотек Python, которые предназначены для обработки, анализа и визуализации данных. Эти библиотеки существенно упрощают работу с большими данными.
Python также можно использовать для статистического анализа, и он широко используется в машинном обучении – это два важнейших компонента науки о данных.
Java
Java является не менее полезным языком для больших данных. Некоторые из популярных инструментов для работы с большими данными написаны именно на Java. Они являются свободными, гибкими и бесплатными, что делает Java очень привлекательным для всех, кто работает с большими данными.
JavaScript
JavaScript – это один из основных языков программирования для веб-разработки. Он позволяет делать веб-сайты интерактивными и динамичными, а не статичными.
Преимущества JavaScript делают его полезным для представления и визуализации данных в Интернете. JavaScript часто используется для обмена большими данными и упрощения их понимания.
C/C++
С и С++ - невероятно полезные языки программирования. И хотя С был изобретен в начале 1970-х, а С++ - в середине 1980-х, программисты со знанием С и С++ по-прежнему пользуются большим спросом. И на это есть веская причина.
Когда речь идет о скорости, то С++ часто оказывается лучшим вариантом. Одно из ключевых преимуществ языков программирования С – это быстрая обработка больших объемов данных. Когда необходимо получать информацию быстро в некоторых случаях, то С++ может оказать лучшим выбором.
R
Неотъемлемой частью получения достоверных и полезных выводов является статистический анализ больших данных. R отлично справляется со статистическим анализом и визуализацией. R является предпочтительным вариантом для анализа данных, когда необходимо применить сложную статистику.
SQL
SQL используется для доступа к информации, которая хранится в базах данных. Язык был разработан для оперирования с большими базами данных со связями между различными переменными из разных наборов данных. Часто SQL используется для простого доступа к большим объемам хранимых данных.
Проблемы, связанные с большими данными
С большими данными приходят большие проблемы. Входящие данные, которые необходимо проанализировать, могут оказаться структурированными, неструктурированными или чем-то средним между тем и тем.
Структурированные данные четко определены, например, день рождения или количество проданных товаров в день. И их намного проще обрабатывать и интерпретировать.
Неструктурированные данные сложно понять, и они нуждаются в дополнительной интерпретации, чтобы стать полезными. Хорошим примером неструктурированных данных обычно является текст электронного письма или твита.
Одна из проблем больших данных заключается лишь в том, что просто необходимо осмыслить огромный объем доступной информации. Именно алгоритмы для понимания ключевого смысла текста являются основной частью извлечения информации из больших данных.
Также серьезными проблемами является конфиденциальность и безопасность. Часто кажется, что мы слышим о краже личной информации от тысяч людей еженедельно. Большие данные требуют новых инструментов и методов для обеспечения безопасности информации. Потеря контроля над информацией может нанести ущерб репутации компании, а также может привести к различным юридическим и финансовым последствиям.
Огромной проблемой также можно считать хранение и обработку данных. При наличии больших объемов данных, которые быстро меняются, требуется быстрый доступ и интерпретация. Часто для этой цели используют облачное хранилище, но оно может создавать дополнительные проблемы со скоростью, стоимостью и доступностью.
Узнайте больше о больших данных
Возможностей в области больших данных очень много, и спрос на специалистов по обработке данных, вероятно, будет только расти, так как онлайн-мир продолжает производить все больше информации.
Если вас заинтересовала работа с большими данными, то первый шаг – это научиться работать с некоторыми языками программирования из списка выше.

Давно прошли те времена, когда «база данных» представляла собой единую СУБД на основе реляционной модели данных, которую обычно устанавливали на самом мощном сервере в центре обработки данных. Такая база данных могла обслуживать все виду запросов – OLTP (On-Line Transaction Processing – обработка транзакций в режиме реального времени), OLAP (On-Line Analytical Processing – аналитическая обработка данных в режиме реального времени) – все, что нужно для бизнеса.
В настоящее время базы данных работают на самом обычном оборудовании, они также стали более сложными с точки зрения высокой доступности и более специализированными для обработки определенного типа трафика. Специализация позволяет добиться гораздо большей производительности баз данных – все оптимизировано для работы с определенным типом данных: оптимизатор, механизм хранения, даже язык может быть не SQL, как это бывает обычно. Он может быть основан на SQL с некоторыми расширениями, которые позволяют более эффективно манипулировать данными, или может быть чем-то абсолютно новым, созданным с нуля.
На сегодня мы имеем аналитические столбчатые базы данных, такие как ClickHouse или MariaDB AX, платформы обработки и анализа больших данных, такие как Hadoop, решения NoSQL, такие как MongoDB или Cassandra, хранилища данных типа «ключ-значение», такие как Redis. Мы также имеем базы данных временных рядов, такие как Prometheus или TimeScaleDB. Это именно то, на чем мы акцентируем внимание в данной статье. Базы данных временных рядов (Time Series Databases) – что это такое и зачем вам нужно еще одно хранилище данных в своей среде.
Для чего нужны базы данных временных рядов?
Как видно из названия, базы данных временных рядов предназначены для хранения данных, которые изменяются со временем. Это могут быть абсолютно любые данные, собранные с течением времени. Это могут быть метрические показатели, собранные из некоторых систем – все системы трендов являются примерами данных временных рядов.
Каждый раз, когда вы смотрите на информационные панели в ClusterControl, на самом деле вы видите визуальное представление временных рядов, хранящихся в Prometheus – базе данных временных рядов.
Временные ряды не ограничиваются метрическими показателями базы данных. Метриками может быть что угодно – изменение потока людей, входящих в торговый центр, с течением времени, изменение трафика в городе, использование общественного транспорта в течение дня, течение воды в реке или ручье, количество энергии, вырабатываемое водной установкой – все это и все остальное, что можно измерить во времени, является примером временных рядов. Такие данные можно запросить, построить, проанализировать, чтобы найти корреляционную зависимость между различными метриками.
Структура данных в базе данных временных рядов
Как вы понимаете, самая важная составляющая данных в базе данных временных рядов – это время. Существует два основных способа хранения данных. Первый способ чем-то похож на хранилище «ключ-значение» и выглядит так:
Метка времени
Метрика 1
2019-03-28 00:00:01
2356
2019-03-28 00:00:02
6874
2019-03-28 00:00:03
3245
2019-03-28 00:00:04
2340
Проще говоря, для каждой метки времени имеется некоторое значение метрики.
Второй способ подразумевает хранения большего числа показателей. Вместо того, чтобы хранить каждую метрику в отдельной таблице или коллекции, их можно хранить вместе.
Метка времени
Метрика 1
Метрика 2
Метрика 3
Метрика 4
Метрика 5
2019-03-28 00:00:01
765
873
124
98
0
2019-03-28 00:00:02
5876
765
872
7864
634
2019-03-28 00:00:03
234
7679
98
65
34
2019-03-28 00:00:04
345
3
598
0
7345
Такая структура данных, когда все метрики связаны, позволяет более эффективно запрашивать данные. Вместо того, чтобы читать несколько таблиц и объединять их для получения всех метрик, достаточно прочитать лишь одну единственную таблицу, чтобы подготовить данные к обработке и представлению.
У вас может возникнуть вопрос – что же здесь нового? Чем эта база данных отличается от обычной таблицы в MySQL или в любой другой реляционной базе данных? Да, действительно, конструкция таблиц очень похожа. Однако есть существенные различия в рабочей нагрузке, которые могут существенно повысить производительность, если хранилище данных предназначено для использования такого рода таблиц,
Временные ряды, как правило, только растут. Маловероятно, что вы будете обновлять старые данные. Чаще всего строки в таблице не удаляются, однако вам может понадобиться какая-то агрегация данных с течением времени. Если принять это при проектировании внутреннего устройства базы данных, то этот факт будет иметь существенное расхождение в сравнении со «стандартными» реляционными (и не реляционными) базами данных, предназначенными для обработки транзакций в режиме реального времени. Что здесь является наиболее важным, так это способность последовательно хранить большие объемы данных, поступающих со временем.
Можно, конечно, использовать РСУБД для хранения временных рядов, но она не оптимизирована для этого. Данные и индексы, сгенерированные на ее основе, могут стать слишком большими, и запросы будут проходить очень медленно. Механизмы хранения данных, используемые в СУБД, предназначены для хранения различных типов данных. Обычно они оптимизированы для рабочей нагрузки обработки транзакций в режиме реального времени, которая включает в себя частое изменение и удаление данных. В реляционных базах данных также часто отсутствуют специализированные функции и функции, предназначенные для обработки временных рядов. Мы уже упоминали, что вы вероятно столкнетесь с необходимостью агрегировать данные, полученные ранее какой-то временной метки. Вы также можете иметь возможность легко запускать некоторые статистические функции для ваших временных рядов, чтобы сглаживать их, определять и сравнивать тренды, интерполировать данные и многое другое. Здесь, например, вы можете найти некоторые функции, которые Prometheus предоставляет пользователям.
Примеры баз данных временных рядов
На рынке существует множество баз данных временных рядов, поэтому, естественно, что рассмотреть все мы не сможем. Но мы все же хотели привести несколько примеров баз данных временных рядов, которые, возможно, вам уже знакомы или которые вы уже, возможно, используете (сознательно или нет).
InfluxDB
InfluxDB была разработана компанией InfluxData. Это база данных временных рядов с открытым исходным кодом, написанная языке программирования Go. Хранилище данных позволяет вводить запросы данных на языке, подобном SQL, что позволяет разработчикам легко интегрировать эту базу данных в свои приложения. InfluxDB также может работать как часть коммерческого решения, которое охватывает весь стек, предназначенный для обеспечения процесса обработки данных временных рядов, полнофункциональной высоко доступной средой.
Prometheus
Prometheus – это еще один проект с отрытым исходным кодом, который также написан на языке программирования Go. Он обычно используется в качестве серверной части для различных инструментов и проектов с открытым исходным кодом, например, Percona Monitoring and Management. Prometheus также является наилучшим вариантом для ClusterControl.
Prometheus можно развернуть из ClusterControl с целью хранения данных временных рядов, собранных на серверах баз данных, контролируемых и управляемых ClusterControl:
Prometheus широко используется в мире Open Source, поэтому его довольно легко интегрировать в уже существующую среду с помощью нескольких экспортеров.
RRDtool
Это один из примеров базы данных временных рядов, которую многие используют, даже не подозревая об этом. RRDtool – это достаточно популярный проект с открытым исходным кодом для хранения и визуализации временных рядов. Если вы хоть раз использовали Cacti, то и RRDtool вы тоже использовали. Если вы разработали свое собственное решение, вполне вероятно, что и здесь вы тоже использовали RRDtool в качестве серверной части для хранения данных. Сейчас RRDtool, возможно, не так популярен, как это было в 2000-2010 годах. В те годы это был самый распространенный способ хранения временных рядов. Забавный факт – ранние версии ClusterControl использовали именно RRDtool.
TimeScale
TineScale – это база данных временных рядов, разработанная на основе PostgreSQL. Это расширение для PostgreSQL, которое использует основное хранилище данных для предоставления доступа к ним, что означает, что оно поддерживает все разновидности SQL, доступные для использования. Поскольку это расширение, то оно использует все функции и расширения PostgreSQL. Вы можете совмещать временные ряды с другими типами данных, например, объединять временные ряды с метаданными, пополняя информацией выходные данные. Вы также можете выполнить более сложную фильтрацию, используя JOIN и таблицы без временных рядов. Геоинформационное обеспечение в PostgreSQL TimeScale можно использовать для отслеживания географических местоположений с течением времени, а также использовать все возможности масштабирования, предлагаемые PostgreSQL, включая репликацию.
Timestream
Amazon Web Services также предлагает базы данных временных рядов. О Timestream было объявлено совсем недавно, в ноябре 2018 года. Она добавляет еще одно хранилище данных в портфель AWS, помогая пользователям обрабатывать временные ряды, поступающие из таких источников, как устройства Интернет вещей или отслеживаемые сервисы. Его также можно использовать для хранения метрических данных, полученных из журналов, созданных несколькими службами. Это позволяет пользователям выполнять аналитические запросы к ним, помогая понять закономерности и условия, в которых работают службы.
Tiemstream, как и большинство сервисов AWS, обеспечивает простой способ масштабирования в случае, если с течением времени возрастает потребность в хранении и анализе данных.
Как видите, вариантов баз данных временных рядов на рынке множество, и это не удивительно. В последнее время, все более популярным становится анализ временных рядов, поскольку он становится все более важных для различных бизнес-операций. К счастью, есть большое количество проектов как с открытым кодом, так и коммерческих. И с большой долей вероятности вы сможете найти инструмент, который полностью удовлетворит ваши потребности.