По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Чтобы понять NoSQL, нужно разобраться, что такое SQL и почему мы говорим ему No.
Итак, SQL (structured query language) расшифровывается как «язык структурированных запросов», и это язык запросов для управления данными в так называемых реляционных базах данных, или просто БД
В реляционных базах мы храним данные в таблицах, которые логически связаны между собой - отсюда и название - реляционные от слова relation, связь. Это один из самых популярных типов баз.
В этих таблицах есть строки и столбцы. В столбце таблицы хранится определенный тип данных, а в каждой ячейке – значение.
Строка же получается как набор связанных значений, которые относятся к одному объекту - мы видим что у крыла типа чайка длина 25 метров.
Ну и каждая строка в таблице может быть помечена каким то уникальным идентификатором, который называется первичным ключом (primary key). А затем при помощи него мы можем связать данные из нескольких таблиц, например в отдельной таблице, где он станет внешним ключом (foreign key).
В общем, как таблица в экселе, только данные могут быть связаны.
Что еще важно знать: реляционные БД требуют так называемую схему (schema) - описание структуры таблицы ее полей и ограничений. То есть если нам например нужно добавить или убрать столбец в таблице, то это изменение коснется всех данных внутри нее.
Также БД этого типа соответствуют так называемым принципам ACID (Atomicity — Атомарность, Consistency — Согласованность, Isolation — Изолированность, Durability — Надёжность), что вкратце означает, что при работе с базой, целостность и согласованность данных гарантирована, даже если возникли проблемы с сетью или железом, что полезно при работе с финансами, например.
В качестве примеров таких баз назовем: Microsoft SQL Server, Oracle Database, MySQL и PostgreSQL.
Разобрались. Теперь вернемся к NoSQL. Это тип баз данных, которые хранят данные в отличном от реляционных таблиц формате. Они узкоспециализированны для конкретных задач и нужны для улучшения производительности, масштабируемости и удобства в работе.
Базы данных "ключ-значение" (key-value)
Суть в том, что мы храним данные в таком виде: у нас есть уникальный ключ, который указывает на какое-то значение. А сама база - это совокупность этих пар. Вот так просто! Причем эти данные могут быть чем угодно, числом, строкой или даже другой парой ключ-значение потому что в отличии от реляционных баз данных они не имеют предопределенной структуры данных.
Многие БД такого типа хранят данные в памяти (RAM), в отличии от других баз, которые хранят данные на диске, что хоть и может ограничивать объем хранимых данных (хотя они требуют гораздо меньше памяти), но это обеспечивают просто невероятную скорость. Ну и раз это NoSQL то никаких сложных запросов, никаких связей друг с другом - мы просто записываем ключ и его значение, и получаем значение по ключу.
Где их использовать? Они отлично подходят для хранения кэша или пользовательских сессий. А в качестве самого простого примера можно назвать корзину в интернет магазине - где мы храним идентификатор пользователя, и сколько товаров он положил в корзину.
Самые популярные хранилки по типу “ключ - значение” это Redis, Memcached и DynamoDB.
Wide-column (columnstore базы данных, БД с широкими столбцами или колоночные БД)
Все также просто - берем key-value БД, и делаем так чтобы в значении мы могли хранить несколько столбцов сразу. Это позволяет удобно хранить связанную информацию. Похоже на реляционную БД, но только в отличии от нее, тут у нас нет схемы, поэтому мы можем хранить разные неструктурированные данные.
Такой тип БД подойдет для хранения логов, данных с умных холодильников и чайников, а также различных аналитических приложений, где данные хранятся в большом объеме. Netflix, например, хранит в таких таблицах историю просмотров пользователя.
В качестве примеров таких баз назовем Cassandra, Hbase и ClickHouse.
Базы данных документов или документориентированные БД (Document DB)
Подробнее про них можно прочитать в нашей отдельной статье.
Если предыдущие типы NoSQL БД обычно используются для специфических задач, то эти базы уже более универсальны, и могут стать основным местом хранения информации.
Здесь мы храним документы. Документ это набор нескольких пар ключ-значение, о которых мы говорили раньше, и раз это не SQL, то они неструктурированны и не требуют схему. Это значит, что мы можем легко добавлять и удалять поля в документе, в отличие от реляционных БД, где изменения затронули бы всю таблицу. Документы даже могут быть вложенными, и содержать в себе другие документы.
Данные хранятся в стандартных форматах, таких как XML, YAML и JSON. Такая форма хранения идеально подходит к объектам, которые используются в приложениях. Мы буквально сразу получаем полный объект который нам нужен, а в SQL нужно сначала приложить усилия и даже сделать несколько запросов и все собрать в необходимый вид.
Документы можно группировать друг с другом собирая их в коллекции, которые можно собирать в логическую иерархию, получая что-то по типу реляционных БД.
Это как шкаф на работе - в один ящик мы можем положить трудовые договоры, в другой - договоры с партнерами, а в третий договоры аренды.
Ничто нам не мешает сложить всё в одну кучу, но так удобнее. И вот эти ящики как раз и будут коллекциями в нашем случае. А отсутствие схемы позволяет нам положить в один ящик договоры, которые схожи логически, но имеют разную структуру внутри. Например, долгосрочный договор с сотрудником и договор с компанией. Коллекции есть не у всех БД такого типа, некоторые системы используют теги или древовидные иерархии.
Они часто используются для мобильных приложений и игр, блогов, интернет магазинов и всяких штук где у нас имеется много контента.
Самые популярные БД такого типа - MongoDB, Amazon DynamoDB, CouchDB.
Графовые БД (Graph DB)
Тут мы больше значения уделяем тому как данные связаны друг с другом, и эта БД лучше всего обрабатывает такие данные.
Тут у нас есть узлы, которые представляют данные и ребра (или соединения), которые описывают связь между этими данными. Помните как в реляционных базах мы записывали связь в отдельной таблице? Тут мы можем обойтись без нее, просто показав связь.
Такие базы просто необходимы для алгоритмов рекомендаций, социальных сетей, управления компьютерными сетями и маршрутизацией или даже обнаружения финансового мошенничества.
Самые популярные графовые базы: Neo4j и DGraph
Поисковые БД (Search-engine database)
Они, как понятно из названия, нужны для поиска данных из большого количества источников.
Работают они примерно также как и базы данных документов - мы добавляем документы с текстом внутри, а БД проанализирует весь текст в этих документах и создаст индексы для этого текста.
По сути это работает как указатели, которые ты видел в конце книги, где указывается какой-то термин и страница на которой он встречается.
И когда пользователь выполняет поиск, то сканируются только эти индексы, а не все документы в базе.
Ну и очевидно что они используются в качестве полнотекстового поиска, а также для хранения и анализа логов. Примеры - Elasticsearch, Solr, Algolia
Базы данных временных рядов (Time series database)
Это базы данных, оптимизированные для данных с отметками времени. Такое используется, для мониторинга систем, где мы храним значение времени и данные в этот момент. Например, загрузка сервера или количество подключений.
Примеры - InfluxDB и Prometheus
Многомодульные БД (multi-model)
Также существуют так называемые много-модульные БД (multi-model), которые поддерживают несколько моделей данных.
Например тот же рredis умеет и в ключ-значение, и документы с графами и даже временные данные обработает.
В сегодняшней статье поговорим об одном очень полезном инструменте Asterisk, который называется Call Flow. Данный инструмент позволяет управлять отправкой вызовов на основании положения переключателя. Переключатель может находиться в режиме Normal и Override. По сути, данный функционал является чем-то наподобие тумблера. Когда он в положении “включено”, входящие звонки будут отправляться по одному назначению, когда “выключено”, по другому. Например, в рабочие часы, необходимо настроить отправку входящих звонков на специальную ринг-группу, а в нерабочие – на IVR. С такой задачей поможет справиться модуль Time Conditions. Но если компания не имеет чётко определенного рабочего времени, то данный модуль уже не поможет, поскольку он переключает режим обработки вызовов автоматически в определенно заданное время.
/p>
С помощью Call Flow переключить “тумблер” можно в любое время и нужный режим обработки вызовов сохранится до тех пор, пока не будет изменен вручную. Для переключения режимов в Call Flow предусмотрены специальные коды (feature code). Существует 100 кодов (0-99), каждый из которых может включать определенный режим обработки вызовов. Чтобы использовать Call Flow нужно ввести специальный индекс ( 0-99) и дополнить его специальным кодом -28. Например, если индекс– 1, то feature code, включающий Call Flow будет *281.
Call Flow Control
Рассмотрим модуль Call Flow Control на примере FreePBX 13. Для того, чтобы открыть панель управления модулем, переходим по следующему пути Applications -> Call Flow.
По умолчанию, никаких записей нет. Жмём кнопку Add и перед нами открывается панель добавления нового переключателя.
Рассмотрим основные параметры, которые нужно настроить:
Call Flow Toggle Feature Code Index – Индекс переключателя. Как было сказано ранее, каждый feature code модуля Call Flow начинается с *28. Индекс это последняя часть кода, который может иметь значения от 0 до 99. Если вы выбрали 1 в качестве индекса, то код будет *281, если 78, то *2878 и так далее.
Description – Описание помогает быстро идентифицировать нужный переключатель среди остальных в списке.
Current Mode – Текущий режим. Выбор начального состояния переключателя Normal (Green/BLF off) или Override (Red/BLF on). Позднее эти кнопки (в дополнение к feature code’у) можно использовать для изменения режима.
Normal (Green/BLF off) - Эта настройка говорит о том, что звонки отправляются по стандартному назначению. Если на телефоне есть BLF, запрограммированный под данный feature code, то в данном состоянии лампочка будет гореть зеленым или не гореть вообще.
Override (Red/BLF on) – Эта настройка, говорит о том, что звонки отправляются по другому (нестандартному) назначению. Если на телефоне есть BLF запрограммированный под данный feature code, то в данном состоянии лампочка будет гореть красным.
Recording for Normal Mode – Позволяет настроить запись, которая будет проигрываться при переключении в нормальный режим. По умолчанию, сначала будет гудок (beep), а затем объявление о том, что feature code деактивирован. Вы можете записать собственное объявление при помощи модуля System Recordings
Optional Password – Опционально можно настроить специальный пароль для использования данного feature code’а. Пользователь, желающий воспользоваться кодом, должен будет сначала ввести пароль на своём телефоне.
Normal Flow Destination – Назначение, куда должны отправляться входящие звонки, когда переключатель находится в режиме Normal (Green/BLF off). Это может быть любое назначение на PBX, как то внутренний номер, IVR, ринг группа и т.д.
Override Flow – Это назначение, куда должны отправляться вызову, когда переключатель находится в режиме Override (Red/BLF on). Это может быть любое назначение на PBX, как то внутренний номер, IVR, ринг группа и т.д.
На примере ниже мы создали переключатель, который в нормальном режиме отправляет все звонки на IVR, а когда включен – на Announcement, который уведомит абонентов о том, что компания не работает. Для использования данного feature code’а, необходимо ввести на телефоне *2852
В данной статье будет произведен обзор функционала факса в Elastix 4 и произведена его настройка.
Обзор
Данный функционал находится в общем меню слева, и называется, как я уже упоминал выше – Fax:
Для первичной настройки необходимо пройти по следующему пути Fax → Virtual Fax → New Virtual Fax. Начнем с создания виртуального факса.
Настройка Fax Virtual Server
Как видно на скриншоте ниже, необходимо заполнить несколько полей – название, адрес электронной почты и так далее (подробнее – ниже)
Virtual Fax Name - Имя виртуального факса
Associated Email - Электронная почта для данного факса
Caller ID Name - Имя факса при звонке
Caller ID Number - Номер факса
Fax Extension (IAX) - экстеншен факса
Secret (IAX) - пароль для экстеншена факса
Country Code - код страны
Area Code - код зоны, в данном случае используется московский код
После нажимаем на Save и должен появится список факсов следующего вида:
Далее необходимо создать экстеншен IAX2. Для этого нужно пройти по следующему пути:
PBX Configuration → Extension → Add Extension → Choose IAX Extension
И настроить следующие поля:
User Extension - номер экстеншена, такой же, как и в п.1
Display Name - название экстеншена – например, Fax
SIP Alias - такой же как и User Extension
Add inbound ID - номер, указанный в настройках виртуального факса
secret - пароль, указанный в настройках виртуального факса
Для завершения настройки необходимо кликнуть кнопку Submit. После этого необходимо снова зайти в созданный экстеншен и в разделе Device Options поставить значение поля requirecalltoken равным No - в противном случае, данный экстеншен не будет зарегистрирован как сервис факса.
Проверка работоспособности и заключение
Теперь можно зайти в Operator Panel и увидеть зарегистрированный свежесозданный экстеншен.
Теперь по пути Fax → Virtual Fax → Send Fax появится возможность отправить факс. Также можно ввести команду faxstat –v для проверки – вы должны увидеть следующий вывод команды: