По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Потренируйтесь в ответах на популярные вопросы по SQL на собеседованиях. В данной статье приведен список типовых вопросов по SQL, с которыми можно столкнуться на настоящем собеседовании, и даны ответы. Чтобы получить максимум из прочитанного, постарайтесь сначала отвечать на вопросы самостоятельно. Удачи! 1. Что такое SQL? SQL расшифровывается как Structured Query Language – язык структурированных запросов. Это язык программирования для взаимодействия с данными, которые хранятся в системе управления реляционными базами данных. Синтаксис SQL схож с английским языком, поэтому его легко читать, писать и интерпретировать. Он позволяет вам писать запросы, определяющие подмножество данных, которые вы ищите. Эти запросы можно сохранять, уточнять, обмениваться ими и запускать в различных базах данных. 2. Что такое база данных? База данных (БД) – это набор данных, хранимых на компьютере. При этом сами данные структурированы таким образом, что их можно было легко получить. 3. Что такое реляционная база данных? Реляционная база данных – это разновидность базы данных. В ней используется структура, которая позволяет нам идентифицировать и обращаться к данным в привязке к другим частям данных из БД. Данные в реляционной БД часто организованы в виде таблиц. 4. Что такое РСУБД? Система управления реляционными базами данных (РСУБД) – это программа, позволяющая вам создавать, обновлять и администрировать реляционную базу данных. Для доступа к базам данных большинство РСУБД использует язык SQL. Самой популярной РСУБД считается MySQL. К другим системам относятся PostgreSQL, Oracle DB, SQL Server и SQLite. 5. Что такое таблица? Таблица – это набор данных, распределенных по строкам и столбцам. Иногда их называют «связями». В таблицах могут быть сотни, тысячи и иногда даже миллионы строк данных. 6. Что такое строка и столбец в таблице? Строка – это одна запись данных в таблице. Столбец – это набор значений данных определенного типа. 7. Что такое тип данных? Тип данных – это атрибут, который определяет тип данных в столбце. В каждом столбце БД есть тип данных. Несколько часто используемых типов данных: INTEGER, TEXT, DATE, REAL. 8. Что такое первичный и внешний ключ? Первичный ключ (primary key) – это столбец, который однозначно определяет каждую строку в таблице. Первичные ключи должны соответствовать следующим требованиям: ни одно значение не может быть пустым (NULL), каждое значение должно быть уникальным и в таблице не может быть более одного столбца с первичным ключом. Например, в таблице customers первичным ключом будет customer_id. Внешний ключ (foreign key) – это первичный ключ для одной таблицы, который присутствует и в другой таблице. Например, есть дополнительная таблица orders. В каждом заказе может храниться информация о клиенте. Поэтому внешним ключом будет столбец customer_id. 9. В чем отличие ALTER от UPDATE? Оператор ALTER используется для добавления нового столбца в таблицу. Он изменяет структуру таблицы. Оператор UPDATE используется для редактирования строки в таблице. Он изменяет существующие записи в таблице. 10. Что такое запрос? Запрос (query) – это оператор SQL для получения информации, хранимой в базе данных. Запросы позволяют нам «общаться» с базой данных, задавая вопросы и возвращая результирующий набор подходящих данных. 11. Что такое подзапрос? Подзапрос (subquery) – это внутренний запрос, вложенный во внешний. Запросы можно вложить через операторы SELECT, INSERT, UPDATE или DELETE. Если есть подзапрос, то он будет выполняться до запуска внешнего оператора. 12. Что такое ограничения? Ограничения (constraints) – это набор правил, через которых базе данных сообщается об ограничении типа данных, хранимых в столбцах. Они предписывают базе данных отклонять введенные данные, если они не соответствуют ограничению. Ограничения добавляют информацию о том, как может использоваться столбец, и вызываются после типа данных для столбца. Несколько примеров ограничений: PRIMARY KEY: однозначно определяет каждую строку и требует уникальности каждого значения. UNIQUE: каждое значение в столбце должно отличаться. NOT NULL: в столбцах обязательно должны быть значения. DEFAULT: дополнительный аргумент, который подставляется в качестве предполагаемого значения для каждой новой строки, если в ней не указано значение для этого столбца. 13. Что такое оператор? Оператор (statement) – это текст, который база данных распознает как допустимую команду. Операторами можно пользоваться для выполнения таких задач, как изменение структуры таблицы, обновление данных или извлечение данных из БД. Структура операторов может варьировать, но каждый из них должен заканчиваться точкой с запятой (;). Количество строк в операторе неважно. Оператор можно записать в одну строку или разделить на несколько (для лучшей читабельности). 14. Как вы проверите, есть ли в поле значение или нет? Если в поле отсутствует значение, оно обозначается как NULL. Чтобы проверить поля на пустые значения, можно прописать в качестве условия IS NULL: WHERE [столбец] IS NULL. Чтобы найти поля со значением, добавьте в условие IS NOT NULL: WHERE [столбец] IS NOT NULL. 15. Чем отличаются DISTINCT и UNIQUE? DISTINCT – это ключевое слово, которым мы пользуемся, если хотим вернуть уникальные значения на выводе. Оно отсеивает все повторяющиеся значения в конкретном столбце. UNIQUE – это ограничение, которым пользуются, чтобы все значения столбца отличались. Оно похоже на PRIMARY KEY, с той лишь разницей, что в таблице может быть множество разных столбцов с UNIQUE. 16. Для чего используются агрегатные функции? Агрегатные функции используются для выполнения вычислений на одном или нескольких значениях и возвращают одиночное значение с осмысленной информацией. Несколько примеров агрегатных функций: COUNT(), SUM(), MAX(), MIN(), AVG() и ROUND(). 17. Что такое соединение (JOIN)? JOIN – это способ объединения строк из двух и более таблиц посредством общего столбца. 18. В чем отличие INNER JOIN от LEFT JOIN? INNER JOIN используется для объединения строк из двух таблиц, которые соответствуют условию ON. В конечный результат не попадают строки, не соответствующие условию ON. LEFT JOIN сохраняет все строки из первой таблицы, вне зависимости от того, есть ли для них совпадающая по условию ON строка во второй таблице. 19. Для чего нужны оконные функции? Оконные функции (windows functions) нужны в случаях, когда вы хотите сохранить значения своей исходной таблицы и параллельно отобразить сгруппированную или суммарную информацию. Они похожи на агрегатные функции, но не сокращают количество строк в результате, а объединяют и группируют их в несколько результатов. 20. Что такое индексы и для чего они нужны? Индексы – это мощный инструмент, который используется в фоновом режиме БД для ускорения запросов и выступает в роли справочной таблицы для данных. Они нужны для эффективного хранения данных и быстрого их получения, что может быть критически важным для успеха крупных технологических компаний, которые обрабатывают петабайты данных каждый день.
img
Друг, привет! В статье быстро расскажем о том, как настроить плату Digium TE122 для подключения цифрового Е1 потока. Погнали? Настройка Подключаемся к серверу IP – АТС Asterisk через консоль (CLI) и открываем следующий файл для редактирования - /etc/dahdi/system.conf . Указываем там следующие параметры: span=1,1,0,ccs,hdb3 bchan=1-15,17-31 dchan=16 Сохраняем изменения. Открываем файл /etc/asterisk/chan_dahdi.conf и указываем: group=0 signalling=pri_cpe switchtype=euroisdn context=incoming channel=1-15,17-31 Теперь посмотрим статус карты и ее ошибки следующей командой: dahdi_tool Откроется синий экран (схожий на mc). Внимательно прочитайте статус карты. Далее, перейдем в настройки chan_dahdi.conf. Открываем nano /etc/asterisk/chan_dahdi.conf и добавляем: [channels] language=ru busydetect=yes busycount=10 usecallerid=yes callwaiting=yes usecallingpres=yes threewaycalling=yes transfer=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=no echotraining=no immediate=no faxdetect=no rxgain=0.0 txgain=0.0 Открываем в консоли файл /etc/asterisk/chan_dahdi_channels_custom.conf и добавляем туда: ;language=ru ;callwaiting=yes usecallingpres=yes ;pridialplan=unknown ;prilocaldialplan=unknown resetinterval = 100000000 facilityenable = yes usecallerid=yes cidsignalling=bell cidstart=ring hidecallerid=no sendcalleridafter=1 callwaitingcallerid=yes callerid = asreceived restrictcid = no threewaycalling=yes ;transfer=yes canpark=yes cancallforward=yes callreturn=yes echocancel=yes echocancelwhenbridged=yes ;echotraining=800 relaxdtmf=no ;switchtype=national ;signalling=pri_cpe ;group=0 ;context=from-pstn ;channels=>1-15,17-31 Выходим и сохраняем параметры. Перезагружаем демона Dahdi: /etc/init.d/dahdi restart Дело за малым – поправить диалплан. Открываем файл extensions_custom.conf и добавляем правила. Например: [test_context] exten => _X.,1,Dial(Dahdi/g0/${EXTEN},60,tT) Теперь для того чтобы заработали входящие и исходящие нужно добавить в FreePBX транк g0. Ну и сделать исходящую и входящую маршрутизацию.
img
Умение настраивать VLAN (Virtual Local Area Network) или виртуальные локальные сети - одно из самых базовых умений, которым должен обладать системный администратор. Сегментирование сети с помощью VLAN-ов строго необходимо для PCI, HIPAA и прочих стандартов безопасности, и, кроме того, это помогает сохранять “чистоту” и порядок в больших сетях. Настройка VLAN-ов на маршрутизаторах MikroTik не является сложной задачей, подробнее о шагах настройки вы можете прочесть ниже. Дизайн VLAN в организации Первым шагом в сегментировании сети должен быть не настройка маршрутизатора, а понимание будущей схемы в целом - предпочтительно нарисовать схему на листе бумаги, использовать ПО наподобие Microsoft Visio и т.д. К тому же, если ваша сеть должна соответствовать стандартам безопасности, которые были перечислены выше, то практически не нужно ничего придумывать - в описании стандартов есть подробные инструкции что и как должно быть сегментировано. Однако, чаще всего, сегментирование происходит для общей оптимизации сети - и тут необходимо будет что-то придумать самому. На наш взгляд, проще всего отразить структуру организации в схеме VLAN-ов. Каждый департамент должен находится в собственном VLAN-е, т.к каждый департамент обладает своими собственными уникальными функциями, и, скорее всего, различными правами доступа. Также в отдельные VLAN-ы необходимо поместить сервера и дисковые хранилища. Для серверов и хранилищ рекомендуется использовать отдельные коммутаторы, но, для маленьких компаний это часто невозможно из-за лимитированного бюджета. К тому же, с помощью таких инструментов как Torch или NetFlow можно будет контролировать и мониторить трафик каждого департамента. Гостевая сеть также должна быть помещена в отдельный VLAN, который будет полностью изолирован от внутренней сети. Беспроводные сети также должны находится в своем VLAN, таким образом весь трафик мессенджеров, обновлений мобильных приложений и т.д будет полностью отделен от основной сети. Транковые протоколы VLAN В нашем сценарии у нас есть только один роутер, и создадим VLAN-ы для HR (192.168.105.0/24), бухгалтерии (192.168.155.0/24) и гостевую сеть (192.168.1.175.0/24). Если у вас получится создать три VLAN-а, то, очевидно, получится создать и сто - в нашем примере мы описываем создание только трех VLAN-ов для простоты и прозрачности примера. IP-адреса для каждого VLAN-а также были выбраны случайным образом - для вашей организации, скорее всего, адресация будет иной. В нашем случае, маршрутизатор подключен к коммутатору по интерфейсу ether2, с 802.1q транком между ними - эта схема также известна под именем “роутер на палке” (router on a stick). Мы не будем углубляться в детали касаемо свитча - это может быть Cisco, HP и т.д - потому что 802.1q транки одинаковы практически на всех платформах - если у вас какой-нибудь необычный свитч, то вам стоит просто обратиться к документации и прочесть, как выполняется конфигурация транкового порта. Наш маршрутизатор также обладает подключением к WAN на порту ether1 - все пользователи в VLAN-ах будут использовать его для доступа к интернету. Создание VLAN-ов на MikroTik Сперва необходимо создать VLAN-ы на маршрутизаторе и назначить их на интерфейс ether2. После этого, интерфейс ether2 будет автоматически настроен как 802.1q транк и не будет доступен для трафика без тэгов, что означает, что до конца настройки этот линк будет “лежать” - поэтому строго рекомендуется выполнять эти действия во в нерабочее время. /interface vlan add comment="HR" interface=ether2 name="VLAN 105 - HR" vlan-id=105 add comment="Accounting" interface=ether2 name="VLAN 155 - Accounting" vlan-id=155 add comment="Guests" interface=ether2 name="VLAN 180 - Guests" vlan-id=180 Крайне рекомендуется всегда давать понятные имена интерфейсам и писать комментарии - в дальнейшем это может сильно облегчить администрирование сети и обучение новых системных администраторов. Как мы упомянули выше, создание VLAN-ов и назначение их на физический порт ether2 автоматически изменит тип инкапсуляции на 802.1q, но вы нигде этого не увидите - даже если выведете всю информацию об интерфейсе. Назначаем IP-адреса Далее, необходимо назначить сетевые адреса, чтобы VLAN интерфейсы могли работать как шлюзы: /ip address add address=192.168.105.1/24 comment="HR Gateway" interface="VLAN 105 - HR" add address=192.168.155.1/24 comment="Accounting Gateway" interface="VLAN 155 - Accounting" add address=192.168.180.1/24 comment="Guests Gateway" interface="VLAN 180 - Guests" На всякий случай, еще раз обращу ваше внимание на то, как важно комментировать интерфейсы для удобства в дальнейшем. На данном моменте у нас уже настроены VLAN-ы и у них назначены сетевые адреса. Если у вас не используется DHCP, а используется статическая адресация - на этом настройка VLAN в общем-то закончена. Следующим шагом (этот шаг, соответственно, опционален) является настройка DHCP на VLAN интерфейсах, для того чтобы клиенты внутри каждого VLAN могли автоматически получить динамический IP-адрес. DHCP для VLAN Для начала, необходимо установить адресные пулы для каждого из VLAN-ов: /ip pool add name=HR ranges=192.168.105.2-192.168.105.254 add name=Accounting ranges=192.168.155.2-192.168.155.254 add name=Guests ranges=192.168.180.2-192.168.180.254 Далее, настраиваем DHCP с опциями для DNS и шлюзов: /ip dhcp-server network add address=192.168.105.0/24 comment="HR Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.105.1 add address=192.168.155.0/24 comment="Accounting Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.155.1 add address=192.168.180.0/24 comment="Guest Network" dns-server=8.8.8.8,8.8.4.4 gateway=192.168.180.1 В данном случае мы используем DNS сервис от Google. Далее, добавляем ранее настроенные пулы на VLAN интерфейсы: /ip dhcp-server add address-pool=HR disabled=no interface="VLAN 105 - HR" name=HR add address-pool=Accounting disabled=no interface="VLAN 155 - Accounting" name=Accounting add address-pool=Guests disabled=no interface="VLAN 180 - Guests" name=Guests Адресные пулы соответствуют настроенным сетям, и именно такие DHCP опции как шлюз и DNS присваиваются конкретной DHCP инстанции. Смысл присвоения DHCP для каждого VLAN в том, чтобы у вас была возможность контролировать сроки выдачи адреса (lease times), опции и т.д для каждого сегмента сети, что дает большой простор для оптимизации и контроля DHCP в вашей организации. Настройка VLAN на коммутаторе На данном этапе настройки вам необходимо будет назначить порты доступа на ваших свитчах на конкретные VLAN-ы, и клиенты, которые будут подключены к этим портам будут находится в их VLAN и получать соответствующие IP-адреса по DHCP. Теперь уже вам решать, какие VLAN будут полностью изолированы друг от друга, а какие смогут “общаться” - осталось только настроить соответствующие правила на фаерволле. Как правило, мы разрешаем доступ только абсолютно необходимого трафика в VLAN - если разрешить весь трафик, тогда теряется смысл сегментирования.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59