По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Транспортный уровень OSI (уровень 4) определяет несколько функций, наиболее важными из которых являются восстановление после ошибок и управление потоком. Точно так же протоколы транспортного уровня TCP / IP также реализуют те же типы функций. Обратите внимание, что и модель OSI, и модель TCP / IP называют этот уровень транспортным. Но, как обычно, когда речь идет о модели TCP / IP, имя и номер уровня основаны на OSI, поэтому любые протоколы транспортного уровня TCP / IP считаются протоколами уровня 4. Ключевое различие между TCP и UDP заключается в том, что TCP предоставляет широкий спектр услуг приложениям, а UDP-нет. Например, маршрутизаторы отбрасывают пакеты по многим причинам, включая битовые ошибки, перегрузку и случаи, в которых не известны правильные маршруты. Известно, что большинство протоколов передачи данных замечают ошибки (процесс, называемый error detection), и затем отбрасывают кадры, которые имеют ошибки. TCP обеспечивает повторную передачу (error recovery) и помогает избежать перегрузки (управление потоком), в то время как UDP этого не делает. В результате многие прикладные протоколы предпочитают использовать TCP. Разница между TCP и UDP в одном видео Однако не думайте, что отсутствие служб у UDP делает UDP хуже TCP. Предоставляя меньше услуг, UDP требует меньше байтов в своем заголовке по сравнению с TCP, что приводит к меньшему количеству байтов служебных данных в сети. Программное обеспечение UDP не замедляет передачу данных в тех случаях, когда TCP может замедляться намеренно. Кроме того, некоторым приложениям, особенно сегодня, к передаче голоса по IP (VoIP) и видео по IP, не требуется восстановление после ошибок, поэтому они используют UDP. Итак, сегодня UDP также занимает важное место в сетях TCP / IP. В таблице 1 перечислены основные функции, поддерживаемые TCP/UDP. Обратите внимание, что только первый элемент, указанный в таблице, поддерживается UDP, тогда как TCP поддерживаются все элементы в таблице. Таблица № 1 Функции транспортного уровня TCP/IP Функции Описание Мультиплексирование с использованием портов Функция, которая позволяет принимающим хостам выбирать правильное приложение, для которого предназначены данные, на основе номера порта. Восстановление после ошибок (надежность) Процесс нумерации и подтверждения данных с помощью полей заголовка Sequence и Acknowledgment Управление потоком с использованием окон Процесс, использующий размеры окна для защиты буферного пространства и устройств маршрутизации от перегрузки трафиком. Установление и завершение соединения Процесс, используемый для инициализации номеров портов, а также полей Sequence и Acknowledgment. Упорядоченная передача данных и сегментация данных Непрерывный поток байтов от процесса верхнего уровня, который "сегментируется" для передачи и доставляется процессам верхнего уровня на принимающем устройстве с байтами в том же порядке Далее описываются возможности TCP, а затем приводится краткое сравнение с UDP. Transmission Control Protocol Каждое приложение TCP / IP обычно выбирает использование TCP или UDP в зависимости от требований приложения. Например, TCP обеспечивает восстановление после ошибок, но для этого он потребляет больше полосы пропускания и использует больше циклов обработки. UDP не выполняет исправление ошибок, но требует меньшей пропускной способности и меньшего количества циклов обработки. Независимо от того, какой из этих двух протоколов транспортного уровня TCP / IP приложение выберет для использования, вы должны понимать основы работы каждого из этих протоколов транспортного уровня. TCP, как определено в Request For Comments (RFC) 793, выполняет функции, перечисленные в таблице 1, через механизмы на конечных компьютерах. TCP полагается на IP для сквозной доставки данных, включая вопросы маршрутизации. Другими словами, TCP выполняет только часть функций, необходимых для доставки данных между приложениями. Кроме того, роль, которую он играет, направлена на предоставление услуг для приложений, установленных на конечных компьютерах. Независимо от того, находятся ли два компьютера в одном Ethernet или разделены всем Интернетом, TCP выполняет свои функции одинаково. На рисунке 1 показаны поля заголовка TCP. Хотя вам не нужно запоминать названия полей или их расположение, оставшаяся часть этой лекции относится к нескольким полям, поэтому весь заголовок включен сюда для справки. Сообщение, созданное TCP, которое начинается с заголовка TCP, за которым следуют данные приложения, называется сегментом TCP. В качестве альтернативы также может использоваться более общий термин PDU уровня 4 или L4PDU. Мультиплексирование с использованием номеров портов TCP И TCP, и UDP используют концепцию, называемую мультиплексированием. Поэтому этот подраздел начинается с объяснения мультиплексирования с TCP и UDP. После этого исследуются уникальные возможности TCP. Мультиплексирование по TCP и UDP включает в себя процесс того, как компьютер думает при получении данных. На компьютере может быть запущено множество приложений, таких как веб-браузер, электронная почта или приложение Internet VoIP (например, Skype). Мультиплексирование TCP и UDP сообщает принимающему компьютеру, какому приложению передать полученные данные. Определенные примеры помогут сделать очевидной необходимость мультиплексирования. Сеть из примера состоит из двух компьютеров, помеченных как Анна и Гриша. Анна использует написанное ею приложение для рассылки рекламных объявлений, которые появляются на экране Григория. Приложение отправляет Григорию новое объявление каждые 10 секунд. Анна использует второе приложение, чтобы отправить Грише деньги. Наконец, Анна использует веб-браузер для доступа к веб-серверу, который работает на компьютере Григория. Рекламное приложение и приложение для электронного перевода являются воображаемыми, только для этого примера. Веб-приложение работает так же, как и в реальной жизни. На рисунке 2 показан пример сети, в которой Гриша запускает три приложения: Рекламное приложение на основе UDP Приложение для банковских переводов на основе TCP Приложение веб-сервера TCP Грише необходимо знать, в какое приложение передавать данные, но все три пакета поступают из одного и того же Ethernet и IP-адреса. Вы могли подумать, что Григорий может посмотреть, содержит ли пакет заголовок UDP или TCP, но, как вы видите на рисунке, два приложения (wire transfer и web) используют TCP. TCP и UDP решают эту проблему, используя поле номера порта в заголовке TCP или UDP соответственно. Каждый из сегментов TCP и UDP Анны использует свой номер порта назначения, чтобы Григорий знал, какому приложению передать данные. На рисунке 3 показан пример. Мультиплексирование основывается на концепции, называемой сокетом. Сокет состоит из трех частей: IP-адрес Транспортный протокол Номер порта Итак, для приложения веб-сервера Григория, сокет будет (10.1.1.2, TCP, порт 80), потому что по умолчанию веб-серверы используют хорошо известный порт 80. Когда веб-браузер Анны подключается к веб-серверу, Анна также использует сокет - возможно, такой: (10.1.1.1, TCP, 49160). Почему 49160? Что ж, Анне просто нужен номер порта, уникальный для Анны, поэтому Анна видит этот порт 49160. Internet Assigned Numbers Authority (IANA), организация, которая управляет распределением IP-адресов во всем мире, и подразделяет диапазоны номеров портов на три основных диапазона. Первые два диапазона резервируют номера, которые IANA затем может назначить конкретным протоколам приложений через процесс приложения и проверки, а третья категория резервирует порты, которые будут динамически выделяться для клиентов, как в примере с портом 49160 в предыдущем абзаце. Имена и диапазоны номеров портов (более подробно описано в RFC 6335): Хорошо известные (системные) порты: номера от 0 до 1023, присвоенные IANA, с более строгим процессом проверки для назначения новых портов, чем пользовательские порты. Пользовательские (зарегистрированные) порты: номера от 1024 до 49151, присвоенные IANA с менее строгим процессом назначения новых портов по сравнению с хорошо известными портами. Эфемерные (динамические, частные) порты: номера от 49152 до 65535, не назначены и не предназначены для динамического выделения и временного использования для клиентского приложения во время его работы. На рисунке 4 показан пример, в котором используются три временных порта на пользовательском устройстве слева, а сервер справа использует два хорошо известных порта и один пользовательский порт. Компьютеры используют три приложения одновременно; следовательно, открыто три сокетных соединения. Поскольку сокет на одном компьютере должен быть уникальным, соединение между двумя сокетами должно идентифицировать уникальное соединение между двумя компьютерами. Эта уникальность означает, что вы можете использовать несколько приложений одновременно, разговаривая с приложениями, запущенными на одном или разных компьютерах. Мультиплексирование на основе сокетов гарантирует, что данные будут доставлены в нужные приложения. Номера портов являются важной частью концепции сокетов. Серверы используют хорошо известные порты (или пользовательские порты), тогда как клиенты используют динамические порты. Приложения, которые предоставляют услуги, такие как FTP, Telnet и веб-серверы, открывают сокет, используя известный порт, и прослушивают запросы на подключение. Поскольку эти запросы на подключение от клиентов должны включать номера портов источника и назначения, номера портов, используемые серверами, должны быть известны заранее. Таким образом, каждая служба использует определенный хорошо известный номер порта или номер пользовательского порта. Как общеизвестные, так и пользовательские порты перечислены на www.iana.org/assignments/servicenames-port-numbers/service-names-port-numbers.txt. На клиентских машинах, откуда исходят запросы, можно выделить любой локально неиспользуемый номер порта. В результате каждый клиент на одном и том же хосте использует другой номер порта, но сервер использует один и тот же номер порта для всех подключений. Например, 100 веб-браузеров на одном и том же хост-компьютере могут подключаться к веб-серверу, но веб-сервер со 100 подключенными к нему клиентами будет иметь только один сокет и, следовательно, только один номер порта (в данном случае порт 80). Сервер может определить, какие пакеты отправлены от какого из 100 клиентов, посмотрев на порт источника полученных сегментов TCP. Сервер может отправлять данные правильному веб-клиенту (браузеру), отправляя данные на тот же номер порта, который указан в качестве порта назначения. Комбинация сокетов источника и назначения позволяет всем участвующим хостам различать источник и назначение данных. Хотя в примере объясняется концепция использования 100 TCP-соединений, та же концепция нумерации портов применяется к сеансам UDP таким же образом. Почитайте продолжение цикла про популярные приложения TCP/IP.
img
Привет всем! Многие читатели просили написать статью по настройке китайских GSM-шлюзов GoIP. Ну что же – это она :) Мы постараемся как можно подробнее описать процесс настройки GSM-шлюза GoIP 1 и соединим его с IP-АТС Asterisk с помощью графического интерфейса FreePBX 14. Если у вас останутся вопросы или возникнут проблемы с настройкой, то мы поможем их решить в комментариях к данной статье! Вся линейка оборудования GoIP различается в зависимости от количества SIM-карт, которые они поддерживают, а следовательно, и возможных GSM каналов. Есть модели GoIP 1/4/8/16 и 32. $dbName_ecom = "to-www_ecom"; $GoodID = "3574205354"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName_ecom) or die(mysql_error()); $query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';"; $res_ecom=mysql_query($query_ecom) or die(mysql_error()); $row_ecom = mysql_fetch_array($res_ecom); echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧 Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽'; $dbName = "to-www_02"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); Пошаговое видео Немного теории GoIP 1, как и вся линейка оборудования GoIP – это межсетевой шлюз, который работает на стыке сетей IP и GSM. Сама аббревиатура GoIP означает GSM Over IP. Таким образом, любую сеть IP-телефонии можно связать с сетью подвижной сотовой связи - GSM и использовать её как выход на телефонную сеть общего пользования (ТфОП). Для того, чтобы GSM-шлюзом можно было пользоваться, в него нужно вставить простую SIM-карточку. Форм-фактор должен быть именно mini-SIM. Сейчас объясним совсем просто. У всех есть мобильный телефон. Чтобы с него можно было звонить и принимать вызовы, мы вставляем в него SIM-карту, которой присвоен номер. Встроенная антенна в нашем телефоне находит сотовую сеть и с помощью SIM-карточки идентифицируется в ней. Теперь мы можем звонить и принимать звонки на наш номер со всего мира. А теперь мы вытаскиваем SIM-карту из телефона и вставляем её в шлюз GoIP. Что поменялось? Да по сути - ничего. Шлюз также найдёт и также идентифицируется в сотовой сети. Останется только настроить его и “подружить” с нашей IP-АТС и мы сможем звонить c IP-телефона во внешний мир и принимать звонки от туда. Закрепим всё это схемой: Подготовка к настройке Для начала нужно вставить в шлюз SIM-карточку. На задней панели есть специальный слот, вставьте туда mini-SIM-карточку как показано на картинке ниже. Внимание! Прежде чем вставлять SIM-карты в шлюзы GoIP, слоты должны быть обесточены. Сделать это можно либо отключив питание шлюза, либо отключив питание соответствующего GSM модуля через веб - интерфейс Всё оборудование линейки GoIP настраивается с помощью встроенного графического интерфейса. Для того, чтобы в него попасть нужно подключить шлюз в сеть через один из Ethernet портов, расположенных на корпусе шлюза. Шлюз имеет 2 Ethernet порта: PC - порт может работать как в режиме моста, так и в режиме маршрутизатора. По умолчанию он находится в режиме маршрутизатора и ему присвоен адрес 192.168.8.1/24. Можно назначить на компьютере адрес из той же подсети, подключиться к шлюзу напрямую и получить доступ к веб интерфейсу по упомянутому адресу. В режиме моста шлюз можно подключить к локальной сети; LAN - порт для подключения к локальной сети. По умолчанию он получает адрес по DHCP и для того, чтобы выяснить какой адрес он получил, можно воспользоваться одним из следующих методов: Наберите номер SIM-карточки, которую вы вставили в шлюз. Как только будет ответ, наберите комбинацию *01. IP адрес, который получил шлюз, будет продиктован в трубку; Отправьте на номер SIM-карты SMS сообщение с текстом ###INFO###, в ответ шлюз пришлет адрес, который получил по DHCP. Если у вас есть доступ к DHCP серверу, вы можете узнать IP адрес шлюза через него; Как только вы узнали адрес шлюза, введите его в адресную строку Вашего браузера. Логин и пароль по умолчанию - admin/admin. Первая страница, которая переда нами откроется - это текущий статус шлюза. Если SIM-карта уже была вставлено, то мы увидим примерно следующее: Рассмотрим, что означают данные поля: CH/ Line - Номер канала и линии. У нас модель GoIP 1, поэтому мы видим статус только для одного поддерживаемого канала; M - Статус GSM модуля. Y - значит включён, N - выключен. Если нажать на Y - то данный модуль выключится, и перейдёт в статус N. Соответственно, чтобы включить его, нужно будет нажать N. Прежде чем вставлять или вытаскивать SIM-карту из рабочего шлюза, необходимо выключить GSM модуль; SIM - Статус наличия SIM-карты в слоте; GSM - Статус регистрации шлюза в сети GSM; VOIP - Статус регистрации в сети VoIP, то есть – регистрация на IP-АТС. Мы ещё не проводили никаких настроек, поэтому наш шлюз пока "не видит" IP-АТС; Status - Статус VoIP линии. Изменяется в зависимости от VoIP активностей, которые происходят на шлюзе. Может показывать активный звонок (CONNECTED), входящий звонок (INCOMMING), исходящий звонок через соответствующий GSM канал (DIALING) и другие. Статус IDLE означает, что на шлюзе нет текущих VoIP активностей на соответствующем GSM канале; SMS - Статус регистрации на сервере SMS; ACD(S)/ASR(%)/Duration(S)/Count - Показывают соответственно: среднюю продолжительность звонка, средний коэффициент успеха отвеченных вызовов, продолжительность вызова, текущее количество активных звонков и общее число; CDR Start- Время начала записей CRD; RSSI - Показатель уровня принимаемого сигнала; Carrier - Оператор сотовой связи. В нашем случае это МТС; BST ID - Идентификатор базовой станции; Idle - Время в минутах, прошедшее с момента последнего звонка; Remain - Возможное оставшееся время для совершения исходящих звонков; SMS Remain - Количество оставшихся SMS, которые можно отправить; Reset - Данная вкладка позволяет сбросить показатели полей, рассмотренных выше; Итак, прежде чем приступать к настройке, предлагаем обновить прошивку на нашем шлюзе до актуальной версии. Для этого открываем вкладку Tools → Online Upgrade. Выясняем текущую версию, а затем идём на сайт производителя - http://www.hybertone.com/en/news_detail.asp?newsid=21 и ищем более актуальную версию для своей модели (в нашем случае – GoIP 1): Копируем ссылку, для своей модели, вставляем её в строку Upgrade Site в интерфейсе нашего шлюза и жмём Start Внимание! В процессе обновления нельзя перезагружать или отключать питание шлюза! Дождитесь пока завершится процесс обновления, устройство перезагрузится автоматически. После перезагрузки, Вы увидите уведомление о том, что обновление прошло успешно и новую версию прошивки: Настройка на стороне GoIP Итак, прыгаем в Configurations → Preferences. Здесь меняем часовую зону и отключаем встроенный IVR. После завершения настроек на каждой вкладке интерфейса необходимо подтверждать изменения кнопкой Save Changes Далее переходим на вкладку Network и меняем настройки IP адресации на статические LAN Port → Static IP Теперь переходим на вкладку Basic VoIP и настраиваем подключение к серверу Asterisk. Endpoint Type оставляем как SIP Phone; Config Mode также не трогаем, оставляем Single Server Mode; В полях Authentication ID, Display Name и Phone Number обязательно нужно правильно указать название SIP-аккаунта, который мы потом заведём на FreePBX. Данные поля необходимы для успешной SIP регистрации. В нашем случае SIP-аккаунт называется goip-merion; В поле Password указываем пароль для доступа к транку. Точно такой же нам нужно будет ввести на при настройке на стороне FreePBX; Самый важный момент - SIP Registrar и SIP Proxy. Сюда вводим IP адрес нашего сервера Asterisk и порт, на котором он слушает Chan_SIP. По умолчанию, драйвер chan_sip работает на порту 5160; Проверить это можно через FreePBX в модуле Asterisk SIP Settings. Перейдите на вкладку Chan SIP Settings и проверьте поле Bind Port. Впишите тот порт, который там указан или же, измените его значение и впишите его на GoIP. Таким образом, если IP адрес Вашего Asterisk 192.168.12.34, то в поля SIP Registrar и SIP Proxy вводите 192.168.12.34:5160. Нажимаем Save Changes На вкладке Advanced VoIP есть важный момент. Обратите внимание на поле Signaling Port. Это порт, на котором шлюз слушает SIP, по умолчанию его значение 5060. При настройке транка на стороне FreePBX нужно будет это учесть. В поле Call OUT Auth Mode выберем опцию IP and Password, отметим опцию As Proxy и введём пароль. Такой же пароль потом будет необходимо ввести при настройке транка. Далее на очереди вкладка Media. На ней настроим интервал RTP портов как на Asterisk (10000-20000), а также приоритетность кодеков: Вкладку Call Out и Call Out Auth оставляем без изменений. На вкладке Call In меняем 2 параметра: CID Forward Mode - устанавливаем значение Use CID as SIP Caller ID для того, чтобы определялся номер звонящего; Forwarding to VoIP Number - вписываем сюда номер нашей IP-АТС, куда будут приходить входящие звонки. В нашем случае – это будет внутренний номер 175, который мы создадим на FreePBX; На этом, настройка на стороне шлюза GoIP закончена. Теперь переходим во FreePBX. Настройка на стороне FreePBX Прежде чем приступать к настройкам на стороне FreePBX, предлагаю внести IP-адрес шлюза в белый список fail2ban. В процессе регистрации от шлюза может прийти много неудачных попыток регистрации. Из-за этого он может быть просто заблокирован fail2ban’ом и Asterisk не сможет его даже пинговать. Чтобы этого избежать, рекомендую сделать следующее: Подключитесь к Asterisk через ssh и откройте для редактирования файл /etc/fail2ban/jail.local, например, с помощью vim: vim /etc/fail2ban/jail.local Найдите секцию [DEFAULT] и добавьте в опцию ignoreip адрес шлюза GoIP, который настроили ранее. Адреса можно добавлять через пробел в одну строку, можно также добавлять целые сети. На примере ниже, мы внесли адрес шлюза 192.168.12.34/24 Теперь мы готовы. Сначала настроим новый транк. Для этого открываем раздел Connectivity → Trunks → Add Trunk → Add SIP (chan_sip) Trunk. На вкладке General указываем название и вписываем номер, который присвоен SIM-карточке: Далее переходим на вкладку sip Settings → Outgoing. Указываем имя транка в Trunk Name и заполняем PEER Details следующим образом: Обратите внимание, что параметр port=5060, он должен совпадать с тем, что указан в Signaling Port на GoIP. Для удобства, приводим PEER Details ниже: host="IP Шлюза GoIP" port=5060 type=peer context=from-internal dtmfmode=rfc2833 disallow=all allow=alaw&ulaw insecure=very&port,invite qualify=yes defaultuser=goip-merion secret="Ваш Пароль" nat=no canreinvite=no Теперь переходим на вкладку sip Settings → Incoming. Указываем имя SIP-аккаунта USER Context, оно должно совпадать с Authentication ID, Display Name и Phone Number на GoIP. Затем заполняем USER Details следующим образом: type=friend host=dynamic secret="Ваш Пароль" context=from-trunk dtmfmode=rfc2833 canreinvite=no qualify=yes После выполненных настроек, рекомендую перезагрузить шлюз. После этого, в Asterisk Info у нас должно появиться что-то типа: Это значит, что регистрация шлюза прошла успешно. Обратите внимание, что мы уже создали внутренний номер 175. Если мы откроем статус GoIP, то также увидим там подтверждение того, что транк был успешно зарегистрирован: Нам осталось только создать исходящий маршрут и настроить отправку исходящих вызовов в транк к GoIP шлюзу: А также обозначить в нём правила набора: При этом, входящий маршрут нам не нужен, так как при настройке GoIP в разделе Call In → Forwarding to VoIP Number мы настроили приём всех входящих звонков на номер 175. На данном номере, мы зарегистрировали софтфон DrayTek, попробуем сделать исходящий вызов: Работает А теперь попробуем позвонить на номер SIM-карточки, которую мы вставили в шлюз: Вызов попадает на тот же DrayTek с номером 175. Номер звонящего определяется. На этом настройка шлюза GoIP 1 завершена. Надеюсь, что данная статья была Вам полезна. Пишите в комментарии, если столкнулись с проблемой!
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. Что такое индексы и для чего они нужны? Индексы – это мощный инструмент, который используется в фоновом режиме БД для ускорения запросов и выступает в роли справочной таблицы для данных. Они нужны для эффективного хранения данных и быстрого их получения, что может быть критически важным для успеха крупных технологических компаний, которые обрабатывают петабайты данных каждый день.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59