По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Среди обилия различных вариантов довольно трудно выбрать ту модель базы данных (БД), который идеально подойдет под ваши нужды. Если говорить о разновидностях СУБД, то чаще всего предпочтение отдается реляционным базам. В данной статье мы поговорим об устройстве реляционных баз данных, обсудим принципы их работы, а также плюсы и минусы использования этих систем. Кроме того, продемонстрируем примеры, которые наглядно показывают, как реляционные БД систематизируют данные. Что такое реляционная база данных Реляционная база данных – это тип БД, который специализируется на связях (отношениях) между элементами данных. Он позволяет устанавливать взаимосвязи между различными наборами данных и использовать эти связи для управления и обращения к связанным данным. Для создания и поддержки данных во многих реляционных БД используется SQL (Structured Query Language - структурированный язык запросов). Реляционные и нереляционные базы данных Реляционные БД делают упор на отношениях между данными. Следовательно, реляционные БД должны хранить данные в строго структурированном виде. Это ускоряет индексирование и время ответа на запросы, а также улучшает безопасность и постоянство данных. Нереляционные базы данных, наоборот, не так сильно зависят от структуры данных, поэтому могут хранить большие объемы данных, не теряя гибкости и легко масштабируя хранение и производительность. Как структурируются данные в реляционных системах управления данными? В реляционных системах управления данными (РСУБД) используется модель, которая структурирует данные в таблицы строк (их еще называют записями или кортежами) и столбцов (или атрибутов/полей). Обычно в столбцах размещаются категории данных, а в строки добавляются отдельные экземпляры. В качестве примера рассмотрим онлайн-магазин. В нашей базе данных находится таблица с информацией о клиентах. В столбцах указываются имена клиентов и адреса, а в строках – данные по каждому клиенту. Такие таблицы можно связать или соотнести с помощью ключей. Каждая строка в таблице идентифицируется с помощью уникального ключа (его называют первичный ключ - primary key). Этот ключ можно добавить в другую таблицу, и там он превратится во внешний ключ (foreign key). Отношение первичный/внешний ключ лежит в основе того, как работают РСУБД. Вернемся к нашему примеру. Допустим, у нас есть таблица с заказами товаров. В одном столбце этой таблицы находится информация о клиенте. Сюда мы можем импортировать первичный ключ, который ссылается на строку с информацией по отдельному клиенту. Таким способом мы можем ссылаться на данные или дублировать данные из таблицы с информацией о клиентах. Кроме того, теперь эти две таблицы связаны. Примеры реляционных баз данных Сейчас, когда мы рассмотрели, как работают РСУБД, пора поговорить о популярных примерах их использования. MySQL MySQL разрабатывалась как РСУБД с открытым кодом, затем ее купила компания Sun Microsystems (теперь это Oracle Corporation). Она по-прежнему доступна со свободной лицензией, но с добавлением проприетарных опций. В MySQL заложена встроенная поддержка репликации с ACID-совместимостью, кластеризация без разделения ресурсов между узлами и поддержка многих движков БД. Но на некоторых движках SQL может работать некорректно. MySQL преуспел в быстром вводе данных и масштабируемости, сохранив при этом высокую доступность и производительность. Все это делает MySQL крайне полезным в веб-разработке и создании приложений. PostgreSQL PostgreSQL – это бесплатный менеджер управления реляционными БД, доступный по свободной лицензии. В нем можно найти некоторые функции MySQL с весомым добавлением MVCC (multi-version concurrency contro - управление параллельным доступом посредством многоверсионности), поэтому такая система совместима с ACID. PostgreSQL сохраняет высокий уровень гибкости и производительности даже при обработке больших баз данных. Это подходящее решение для пользователей, которым важна высокая скорость записи/чтения и разноплановый анализ данных. Среди известных пользователей PostgreSQL стоит упомянуть Reddit, Skype и Instagram. MariaDB Изначально MariaDB создавалась сообществом в качестве форка MySQL, когда тот выкупила Oracle. MariaDB все еще свободно распространяется под стандартной универсальной лицензией GNU. MariaDB создана на базе MySQL с добавлением поддержки еще большего количество движков и исправлением ограничений по хранению данных. Она работает быстрее MySQL и позволяет запускать SQL и NoSQL в одной базе данных. Среди известных пользователей MariaDB можно выделить Google, Mozilla и Wikimedia Foundation. SQLite В отличие от других представителей в этом списке, SQLite не является менеджером баз данных с архитектурой клиент-сервер; он, скорее, встраивается в конечное приложение, благодаря чему мало весит и способен работать с большими массивами систем и платформ. В SQLite есть некоторые ограничения, поскольку он лишь частично предоставляет триггеры, имеет ограниченную функцию ALTER TABLE и не может записывать в представления. Кроме того, SQLite ограничивает максимальный размер базы до 32 000 столбцов и 140 ТБ. Получается, что SQLite лучше всего использовать в качестве компонента базы данных для других приложений. Среди известных пользователей можно назвать Google Chrome, Mozilla Firefox, Opera и Safari. Что такое система управления реляционными базами данных? Система управления базой данных (СУБД или DBMS) – это программное решение, которое позволяет пользователям просматривать, запрашивать и управлять базами данных. Система управления реляционными базами данных (РСУБД или RDBMS) – это более расширенное подмножество СУБД для управления реляционными базами данных. Ниже приведены некоторые различия между универсальной СУБД и РСУБД СУБД РСУБД Хранит меньшее количество данных в виде файлов; нет взаимосвязей Сохраняет большие объемы данных в виде связанных друг с другом таблиц Можно обращаться к одному элементу данных за раз Можно обращаться ко многим элементам данных одновременно. При работе с большими объемами замедляется получение данных В реляционном подходе получение данных не замедляется даже для больших БД. Нет нормализации БД. Есть нормализация БД. Не поддерживает распределенные БД Поддерживает распределенные БД. Поддержка одного пользователя. Поддержка нескольких пользователей. Низкий уровень безопасности Много уровней безопасности. Низкие требования к программному и аппаратному обеспечению. Высокие требования к программному и аппаратному обеспечению Плюсы и минусы реляционных баз данных Как и во всех моделях баз данных, здесь есть свои плюсы и минусы. Плюсы Реляционные БД используют таблицы столбцов и строк, поэтому они отображают данные проще, чем другие типы, и работать с ними удобнее. Такая табличная структура создана специально для обработки данных, что повышает производительность и позволяет использовать сложные, высокоуровневые запросы. И, наконец, в реляционных БД легко масштабировать данные, добавляя строки, столбцы или целые таблицы, не нарушая при этом общей структуры базы. Минусы Реляционные БД могут масштабироваться только до определенного предела. Если говорить о размере базы, то в некоторых БД есть строгое ограничение по длине столбцов. Если вы создаете базу на отдельном сервере, то при ее разрастании придется покупать дополнительное место, то есть в долгосрочной перспективе ее поддержание обходится не дешево. Кроме того, постоянное добавление новых элементов может усложнить базу и затруднить установление связей между новыми частями. Сложные отношения между данными замедляют запросы и негативно сказываются на производительности. Заключение После прочтения этой статьи у вас должно появиться четкое понимание того, как работают реляционные базы данных. Также вы познакомились с рядом интересных примеров РСУБД.
img
Наверняка кто-то из вас хоть раз в жизни получал SMS после звонка в определенную компанию. Обычно, это просьба оценить работу операторов. Так, например, это сделано у GSM операторов. Также это может быть SMS с благодарностью за обращение от компании или же об актуальных акциях и предложениях. Сегодня я хотел бы рассказать о том, как Вы можете реализовать подобную функцию с использованием FreePBX Статья написана по мотивам существующей на данном ресурсе публикации "Оценка оператора после звонка" У данного метода есть один недостаток - для его работы нужен chan_dongle и тариф с безлимитными SMS. Для тех, у кого нет пресловутого chan_dоngle, есть другой метод, который я постараюсь объяснить. Для особо нетерпеливых прошу Вас заглянуть в контакты, возможно, я уже там появился :) В данном методе мы не будем ломать диалплан FreePBX и использовать тяжелую артиллерию в виде MySQL. Итак, приступим. Для начала открываем конфигурационные файлы, а именно: /etc/asterisk/extensions_custom.conf Вносим в него такой кусочек диалплана. В коде я дал комментарии зачем нужны некоторые части: [send-sms] exten => _.,1,NoOp(Start sms) exten => _.,n,DIAL(SIP/${EXTEN},,trg) ;опция g позволяет "проваливаться вниз". ВНИМАНИЕ агент должен использовать вашу технологию (sip или pjsip) exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered) //проверяем, был ли отвечен вызов, вот здесь мы или пропускаем клиента дальше если с ним уже говорили или нет. exten => _X.,n(busy),Hangup() exten => _X.,n(answered),Goto(sms,${EXTEN},1) [sms] exten => _X.,1,NoOp(Statrt SendSms) exten => _X.,n,Answer() same => n,Set(COUNT=1); установка счетчика. По идее, он тут не нужен, но сделан на всякий аварийный случай. Вдруг заклинит и клиента заспамит смс? :) same => n,Set(RECIVER=Имя донгла в системе); если используете донгл same => n,Set(RECIPIENT=${CALLERID(num)}) same => n,Set(TEXT="Спасибо что обратились в нашу компанию Рога и копыта"); текст смс same => n,GotoIf($["${RECIPIENT:0:2}" != "79"]?end); это проверка на принадлежность к мобильным номерам. Уточните формат входящих CALLERID(num) на вашей АТС - с 7 или 8? same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} 7${RECIPIENT:1} ${TEXT}'); тут отправка с донгла. same => n,Set(COUNT=$[${COUNT} + 1]); увеличение счетчика (который не нужен, а вдруг) same => n,GotoIf($["${COUNT}" > "1"]?end); проверка и отправка на завершение exten => _X.,n(end),Goto(macro-hangupcall,s,1); Конец Обратите внимание на пометки в диалплане. В частности, Агент должен использовать вашу технологию подключения. Входящие форматы на ваши транки, 7 или 8. Если он еще не унифицирован, то рекомендую это сделать и привести в норму стандарта E164. Если входящие у вас содержат + то, вместо ${RECIPIENT:0:2} сделайте ${RECIPIENT:0:3} На этом, настройка конфигурационного файла extensions_custom.conf закончена. Теперь открываем файл queues_post_custom.conf и вставляем туда такую строку: member=Local/4015781@send-sms/n,0,4015781,hint:4015781@ext-local Где 4015781 номер существующего Агента в очереди. После этого, закрываем файл, перезагружаем диалплан командой dialplan reload и тестируем. Применять можно, например, для отправки благодарности клиенту с напоминанием времени работы или адреса компании. Чтобы не огорчить тех, кто не использует донглы или использует GoIP или другие Gsm шлюзы, на мой взгляд, есть более "красивый" метод: Идем в один из множества веб сервисов для SMS рассылок (названия писать не буду), регистрируемся у них и берем их готовые библиотеки для доступа к API. Я покажу на примере PHP API одной известной компании: #!/usr/bin/php -q <?php #парсим данные из AGI require(′phpagi.php′); $agi = new AGI(); $phone = $agi->request[′agi_arg_1′]; text = $agi->request[′agi_arg_2′]; $sender = ′INFORM′; // !!! Замените API-ключ на свой. $apikey = ′XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ′; $url = ′https://smspilot.ru/api.php′ ′?send=′.urlencode( $text ) .′&to=′.urlencode( $phone ) .′&from=′.$sender .′&apikey=′.$apikey .′&format=json′; $json = file_get_contents( $url ); echo $json.′′; $j = json_decode( $json ); if ( !isset($j->error)) { echo ′SMS успешно отправлена server_id=′.$j->send[0]->server_id; } else { trigger_error( $j->description_ru, E_USER_WARNING ); } Используем AGI. И в представленном диалплане меняем одну строку, а именно: same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} ${TEXT}'); тут отправка с донгла. на: same => n,AGI(sendsms.php, 7${RECIPIENT:1}, "${TEXT}") И на этом - все. Чем данный способ лучше? Могу точно сказать, что в подобных сервисах для компаний есть возможность в качестве отправителя зарегистрировать название организации – это явно плюс в копилку лояльности клиента :) Это значит, что не нужен донг и SMS клиенту приходит не с безликих цифр, а от имени вашей компании в поле отправитель. Это, безусловно, повышает доверие и лояльность получателя SMS. Надеюсь, что данный метод будет полезен и найдёт применение в ваших бизнес-процессах. Удачи!
img
Данная статья посвящена монтированию и демонтированию файловых систем в Linux. Под этим понятием понимается подключение разделов жестких дисков, различных носителей и прочих файловых систем, которые могут находится на различных носителях информации. Получение к ним доступа, отключение автоматически и в ручном режиме. В статье будут рассмотрены следующие вопросы: Подключение и отключение файловых систем вручную. Управление автоматическим монтированием файловых систем. Подключение съемных носителей информации. Основные команды, которые позволяют решать вопросы указанные выше: mount устройство точка_монтирования umount устройство или umount точка_монтирования. /etc/fstab: устройство точка монтирования тип файловой системы параметры dump pass Данный файл – это файл настройки автоматического подключения файловых систем. Точкой монтирования, является пустой каталог на нашей файловой системе. К виртуальной машине подключен диск, определяемый операционной системой /dev/sdc, а на нем создан раздел /dev/sdc1 с файловой системой ext4. Мы можем посмотреть, что на нем ls –l /dev/sdc1. Для того, чтобы посмотреть, что есть на этом диске необходимо создать точку монтирования. Для этой цели подойдет любая папка. Если мы посмотрим корневые папки командой ls /, то увидим следующую картину. Правилом хорошего тона является монтирование файловых систем в папки mnt и media. Обычно папку mnt используют для монтирования разделов, а папку media для монтирования съемных носителей информации. Т.е папка mnt пустая и туда у нас ничего не монтируется, можно создать внутри папку mkdir /mnt/hard. Теперь мы можем смонтировать в данную папку наш жесткий диск, подключенный к виртуальной машине. Монтирование осуществляется следующим образом mount /dev/sdc1 /mnt/hard или mount –t ext4 /dev/sdc1 /mnt/hard. Linux очень хорошо самостоятельно определяет тип файловой системы и в написании команд можно данную опцию опустить. Как мы видим все смонтировалось и так как файловая система журналируемая появилась папочка lost+found. Вообще в линуксе вся файловая система –это такое иерархическое дерево с файлами и папками, подпапками. Все эти файлы и папки вообще могут находится на разных устройствах, в том числе и на сетевых устройствах. Это может быть даже сетевая папка, подключенная к нашей системе. Мы подключили /dev/sdc1 в папку /mnt/hard. Мы можем выполнить команду mount, которая покажет нам, что и куда смонтированно. Мы видим все файловые системы смонтированные. В том числе только, что примонтированный жесткий диск. Так же мы можем увидеть виртуальные файловые системы, типа proc. Виртуальная файловая система proc содержит все запущенные процессы и смонтирована в папку /proc. Как мы видим из скриншота их достаточно много. Помимо тех файловых систем, которые созданы на носителях, примонтированно много виртуальных файловых систем. Можно увидеть, что они смонтированы в разные папки согласно их предназначению. Отмонтировать можно командой umount /dev/sdc1. Следовательно мы можем увидеть ls /mnt/hard, что папка пустая. Иногда при выполнении команды на отмонтирование система ругается, это происходит если мы данную файловую систему, каким-нибудь образом используем, например, если открыт файл с данной папки или подпапки. Следовательно, необходимо завершить все операции, после этого система нам даст отмонтировать. Чтобы вот так вручную не подключать или не отключать разделы, есть файлик /etc/fstab. В нем находятся настройки автоматического монтирования файловых систем. Если в данном файлике не сделать запись, то после перезагрузки система не подключит подмонтированную файловую систему, автоматически. Что касается настройки: в файле мы указываем устройство с файловой системой, затем точку монтирования, тип файловой системы, опции и пара настроек. Dump – говорит нам о том, сохранять ли файлы автоматом на данной файловой системе при отключении системы. Т.е если у нас пропало питание или идет завершение работы. Принимаемые значения 1 - файлики будут сохранятся, 0 не будет сохранятся. Параметр Pass указывает порядок проверки файловых систем. Обычно 1 у корневой файловой системы, у всех последующих 2, у съемных носителей 0. Операционная система Linux обычно позволяет смонтировать файловую систему по UUID. Т.е устройство можно указывать не только в явном виде, но и по метке, и по идентификатору. Указывать по идентификатору надежнее мы можем переименовать устройство или переставить жесткие диски и тогда загрузочный раздел окажется не /dev/sda1, а например /dev/sdc1. Чтобы подобного не произошло, лучше файловые системы прописывать с помощью идентификатора. Потому, что идентификаторы прописаны жестко к каждому разделу и изменить мы их не можем. И это будет более стабильная работа. В нашем же случае мы видим, что основной раздел смонтирован. Имеет файловую систему ext4 . Про опции монтирования можно прочитать в мануале к файлу fstab. Ну и как можно увидеть примонтирован еще один раздел без точки монтирования – это раздел подкачки swap. Можно еще одну интересную вещь заметить, при попытке нового монтирования файловой системы от обычного пользователя операционная система ругнется, что только пользователь root может это сделать, но как только мы пропишем данное монтирование в файл /etc/fstab и скажем, что пользователь обычный имеет право монтировать данную файловую систему, то система совершенно спокойно даст примонтировать без повышения привилегий. Соответственно редактировать данный файл совершенно просто. Открываем его любым редактором в режиме суперпользователя и добавляем данные по монтируемой файловой системе. Если при монтировании вы не знаете какой тип файловой системы, можно просто указать auto и операционная система автоматически ее определит тип файловой системы при монтировании. Далее интересная вещь – это опции при монтировании можно указать defaults (чтение (ro), запись (rw), выполнение (execute), nouser). Параметр user- т.е любой пользователь может монтировать и демонтировать данную файловую систему, если данные параметр не указать, тогда только суперпользователь сможет выполнять данные действия. Параметр auto – т.е данный параметр будет автоматически подключать данную файловую систему при старте компьютера или сервера. Параметр noexec - данный параметр запрещает запуск исполняемых файлов на данной файловой системе. После добавления записи в файл /etc/fstab , мы можем примонтировать файловую систему командой от обычного пользователя mount /mnt/hard. Система обратится к файлу /etc/fstab проверит запись и опции, если есть указанная точка монтирования и в опциях запись user система успешно подмонтирует файловую систему. Аналогично можно провести обратную операцию размонтирования unmount /mnt/hard. Есть хорошая команда, которой приходится пользоваться, особенно если создаем raid массивы – это blkid. Данная команда позволяет посмотреть блочные устройства. Работает от суперпользователя sudo blkid /dev/sdc1. Команда показывает, какой uuid имеется у устройства. И мы можем в файле /etc/fstab, можем указать не имя устройства, а UUID = a783a365-3758-47bd-9f2d-1f5b4155f4ca. И это будет надежнее указание UUID, чем имена дисков, потому что имена дисков могут меняться. Раньше в файле /etc/fstab так же прописывалось монтирование съемных носителей USB флешки, CD-ROM и т.д создавалась запись для файловой системы с правами read-only и что при необходимости смонтировать могут любые пользователи, автоматически флопик и CD-ROM не монтировались. Современные дистрибутивы, включаю Ubuntu последних версий, в том числе пользовательские, с красивыми оболочками Gnome и KDE есть файловый менеджер Nautilus. У данного файлового менеджера есть свои настройки, которые позволяют автоматически монтировать, все что мы подключаем. В случае если мы работаем на серверной операционной системе, например, Ubuntu или CentOS, то понятно в дефолтной конфигурации у нас нету авто монтирования и прочих радостей десктопной версии. Поэтому делаем простую вещь. Вставляем носитель с файловой системой, второй шаг blkid находим наше устройство и третий шаг монтируем, командой mount. Правилом хорошего тона является монтирование всех устройств в папку /media. Здесь обычно располагаются папки cdrom, можно создать папки floppy или usb. И последний нюанс, после того, как вы поработали с флешкой и от монтировали, необходимо корректно ее вытащить. Даем команду eject.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59