На базе типа что это
Что такое База Данных (БД)
База данных — это место для хранения данных. Используется в том числе в клиент-серверной архитектуре. Это все интернет-магазины, сайты кинотеатров или авиабилетов. Вы делаете заказ, а система сохраняет ваши данные в базе.
В этот статье я на простых примерах расскажу, что такое база данных и как она выглядит. А потом поясню некоторые термины из конкретной (реляционной) базы. Те, с которыми вы почти наверняка столкнетесь на работу.
Статья рассчитана на начинающих тестировщиков или аналитиков, то есть тех, кто будет работать с базой, но не на супер-глубоком уровне. Она для тех, кто только входит в мир ИТ, и многого не знает. Она объясняет, что это за звено в клиент-серверной архитектуре такое, и зачем оно нужно.
Содержание
Что такое база данных
База данных — хранилище, куда приложение складывает свои данные. Если приложение небольшое, отдельная база не нужна. Но потом это становится удобнее и выгоднее с точки зрения памяти.
Катя решила открыть свой магазинчик. Она нашла хорошую марку обуви, которую «днем с огнем» не сыскать в ее городе. Заказала оптовую партию и стала потихоньку распродавать через знакомых. Пришлось освободить половину шкафа под коробки, но вроде всё поместилось.
Обувь хорошая, в розницу заказывать в других местах невыгодно — и вот уже у Кати есть постоянные клиенты, которые приводят друзей. Как только какая-то пара заканчивается, Катя делает новый заказ.
Но покупатели хотят новинок, разных размеров. Да и самих покупателей становится все больше и больше. В шкаф коробки уже не влезают!
Теперь, если покупатель просит определенную пару, Катьке сложно её найти. Пока коробок было мало, она помнила наизусть, где что лежит. А теперь уже нет, да и все попытки организовать систему провалились. Места мало, да и детки любят с коробками поиграть.
Тогда Катька решила арендовать складское помещение. И вот теперь красота! Не надо теснить своих домашних, дома чисто и свободно! И на складе место есть, появилась система — тут босоножки, тут сапоги.
Чем больше объемы производства, тем больше нужно места. Если в начале пути склад не нужен, всё поместится дома, то потом это будет оправданно.
Тоже самое и в приложениях. Если приложение маленькое, то все данные можно хранить в памяти. Но учтите, что это память на вашем компьютере, вашем телефоне. И чем больше данных туда пихать, тем медленнее будет работать программа.
Место в памяти ограничено. Поэтому когда данных много, их нужно куда-то сложить. Можно писать в файлики, а можно сохранять информацию в базу данных (сокращенно БД). Выбор за вами. А точнее, за вашим разработчиком.
Как она выглядит
Да примерно как excel-табличка! Есть колонки с заголовками, и информация внутри:
Это называется реляционная база данных — набор таблиц, хранящихся в одном пространстве.
Что за пространство? Ну вот представьте, что вы храните все данные в excel. Можно запихать всю-всю-всю информацию в одну огро-о-о-о-мную таблицу, но это неудобно. Обычно табличек несколько: тут информация по клиентам, там по заказам, а тут по адресам. Эти таблицы удобно хранить в одном месте, поэтому кладем их в отдельную папочку:
Так вот пространство внутри базы данных — это та же самая папочка в винде. Место, куда мы сложили свои таблички, чтобы они все были в одном месте.
Пример базы Oracle
Цель та же — выделить отдельное место, чтобы у вас не была одна большая свалка:
заходишь в папку в винде → видишь файлики только из этой папки
заходишь в пространство → видишь только те таблицы, которые в нем есть
Хранение данных в виде табличек — это не единственно возможный вариант. Вот вам для примера запись из таблицы в системе Users. Там используется MongoDB база данных, она не реляционная. Поэтому вместо таблички «словно в excel» каждая запись хранится в виде объекта, вот так:
А еще есть файловые базы — когда у вас вся информация хранится в файликах. Да-да, простых текстовых файликах!
Почитать о разных видах баз данных можно в википедии. Я не буду в этой статье углубляться в эту тему, потому что моя задача — объяснить «что это вообще такое» для ребят, которые базу в глаза не видели. А на работе они скорее всего столкнутся именно с реляционной базой данных, поэтому о ней и речь.
Как получить информацию из базы
Нужно записать свой запрос в понятном для базы виде — на SQL. SQL (Structured Query Language) — язык общения с базой данных. В нем есть ключевые слова, которые помогут вам сделать выборку:
select — выбери мне такие-то колонки.
from — из такой-то таблицы базы.
where — такую-то информацию.
Например, я хочу получить информацию по клиенту «Назина Ольга». Составляю в уме ТЗ:
В дословном переводе:
Комментарии в Oracle/PLSQL — мой перевод остается работающим запросом, потому что я убрала «лишнее» в комментарии
Если бы у меня была не база данных, а простые excel-файлики, то же действие было бы:
Открыть файл с нужными данными (clients)
Поставить фильтр на колонку «ФИО» — «Назина Ольга».
То есть нам в любом случае надо знать название таблицы, где лежат данные, и название колонки, по которой фильтруем. Это не что-то страшное, что есть только в базе данных. Тоже самое есть в простом экселе.
Бывают запросы и сложнее — когда надо достать данные не из одной таблицы, а из разных. В базе это будет выглядеть даже лучше, чем в эксельке. В экселе вам нужно открыть 1-2-3 таблицы и смотреть в каждую. Неудобно.
А в базе данных вы внутри запроса SQL указываете, какие колонки из каких таблиц вам нужны. И результат запроса их отрисовывает. Скажем, мы хотим увидеть заказ, который сделал клиент, ФИО клиента, и его номер телефона. И всё это в разных таблицах! А мы написали запрос и увидели то, что нам надо:
id_order
order (таблица order)
fio (таблица client)
phone (таблица contacts)
И пусть в таблице клиентов у нас будет 30 колонок, а в таблице заказов 50, в результате выборки мы видим ровно 4 запрошенные. Удобно, ничего лишнего!
Конечно, написать такой запрос будет немного сложнее обычного селекта. Это уже select join, почитать о нем можно тут. И я рекомендую вам его изучить, потому что он входит в «базовое знание sql», которое требуется на собеседованиях.
Результаты выборки можно группировать, сортировать — это следующий уровень сложности. См раздел «статьи и книги по теме» для получения большей информации.
Как связать данные между собой
Вот например, у нас есть интернет-магазин по доставке пиццы. Так выглядит его база данных:
В таблице «client» лежат данные по клиентам: ФИО, пол, дата рождения и т.д.
last_name
first_name
birthdate
В таблице «orders» лежат данные по заказам. Что заказали (пиццу, суши, роллы), когда, насколько довольны доставкой?
order
addr
date
time
Роллы «Филадельфия» и «Канада»
Пицца 35 см, роллы комбо 1
Пицца с сосиками по краям
Комбо набор 3, обед №4
Но как понять, где чей был заказ? Сколько раз заказывал Вася, а сколько Алина?
Тут есть несколько вариантов:
1. Запихать все данные в одну таблицу: тут и заказы, и информация по клиентам. В целом удобно, открыл табличку и сразу видишь — ага, это Васин заказ, а это Машин.
Таблица все растет и растет, в итоге получается просто огромной! А когда данных много, легкость чтения пропадает, придется листать до нужной колонки.
Поиск будет работать медленнее. Чем меньше информации в таблице, тем быстрее поиск. Когда у нас много строк, количество колонок становится существенным.
Много дублей — один человек может сделать хоть сотню заказов. И вся информация по нему будет продублирована сто раз. Неоптимальненько!
Чтобы избежать дублей, таблицы принято разделять:
Новые объекты отдельно
Но надо при этом их как-то связать между собой, мы ведь всё еще хотим знать, чей конкретно был заказ. Для связи таблиц используется foreign key, внешний ключ.
Нам надо у заказа сделать отметку о клиенте. Значит, таблица «orders» будет ссылаться на таблицу «clients». Ключ можно поставить на любую колонку таблицы (в некоторых базах колонка должна быть уникальной, сначала её нужно такой указать). Какую бы выбрать?
Можно ссылаться на имя. А что, миленько, в таблице заказов будем сразу имя видеть! Но минуточку. А если у нас два клиента Ивана? Или три Маши? Десять Саш. Ну вы поняли =) И как тогда разобраться, где какой клиент? Не подходит!
Можно вешать foreign key на несколько колонок. Например, на фамилию + имя, или фамилию + имя + отчество. Но ведь и ФИО бывают неуникальные! Что тогда? Можно добавить в связку дату рождения. Тогда шанс ошибиться будет минимален, хотя и такие ребята существуют. И чем больше клиентов у вас будет, тем больше шанс встретить дубликат.
А можно не усложнять! Вместо того, чтобы делать внешний ключ на 10 колонок, лучше создать в таблице клиентов primary key, первичный ключ. Первичный ключ отвечает за то, чтобы каждое значение в поле было уникальным, никаких дублей. При попытке добавить в таблицу запись с неуникальным первичным ключом получаешь ошибку:
Здесь ключ — «id_order»
Вот на него и нужно ссылаться! Обычно таким ключом является ID, идентификатор записи. Его можно сделать автоинкрементальным — это значит, что он генерируется сам по алгоритму «прошлое значение + 1».
Например, у нас гостиница для котиков. Это когда хозяева едут в отпуск, а котика оставить не с кем — оставляем в гостинице!
Соционика: можно ли подобрать партнера или карьеру по темпераменту
Содержание
Что такое соционика
Соционика — это концепция взаимоотношений между личностями. Последователи направления считают, что людей можно разделить на 16 типов, в зависимости от того, как человек воспринимает информацию. А знание своего типа поможет лучше выстроить отношения, как личные, так и рабочие.
«Большой толковый словарь» не дает определения соционике, но упоминание концепции есть в «Словаре иностранных слов» под редакцией Комлева. Там описывают соционику как науку о межличностных отношениях. [1] Но действительно ли соционика — это наука?
Кто придумал соционику
Теория темпераментов Гиппократа-Галена
Считается, что разделить людей по типам темперамента предложил Гиппократ в книге «О природе человека» в V веке до нашей эры. Теория основывалась на представлении, что в теле текут четыре «жизненных сока» — кровь, флегма (лимфа), желчь и черная желчь. Доминирование одной из жидкостей могло вызвать болезни и влияло на характер человека. При этом комбинация соков зависит от комбинации звезд в момент рождения. [2]
Через шесть веков древнеримский медик Клавдий Гален, основываясь на учении Гиппократа, описал 13 темпераментов. А известные сегодня типы темперамента (холерик, сангвиник, флегматик и меланхолик) окончательно создал Аэций.
Карл Юнг и соционика
В ХХ веке типами темперамента занимался и психиатр Карл Юнг. В 1921 году он опубликовал книгу «Психологические типы». В этой работе впервые прозвучали термины, которые оказали влияние на многие учения о типах личности.
Юнг выделил четыре типа личности по преобладанию одной из психических функций — мышление, эмоции, сенсорика и интуиция. Карл Юнг считал, что не существует «чистых» личностей, а каждый человек бывает экстравертированным (открыт миру) или интровертированным (погружен в себя). Всего получается восемь типов личностей.
На работы Юнга опиралась Сьюзан Деллингер: она присвоила восьми юнговским типам личностей геометрический знак, расположила их на шкале и добавила еще один параметр. Она дополнительно предложила делить людей на рационалов и иррационалов. Так появилась психогеометрия с ее 16 типами.
В конце 1920-х годов Кэтрин Бриггс и ее дочь Изабель Бриггс Майерс взяли теорию Юнга и создали свою систему для оценки личности. Исследовательницы 20 лет дорабатывали типологию и представили методику тестирования, которая известна как тест Майерс-Бриггс. В этой концепции также 16 типов личности. [3]
Упрощенный вариант учения Юнга и Майерс-Бриггс в СССР адаптировала Аушра Аугустинавичюте.
Теория Аушры Аугустинавичюте
В 1960-х годах советская и польская исследовательница Аушра Аугустинавичюте изучала работы Фрейда, Юнга, Кемпинского. К тому времени Майерс и Бриггс уже создали свою классификацию. На базе этих теорий Аугустинавичюте пишет очерк «Дуальная природа человека». Считается, что это одна из первых публикаций по соционике. Очерк начинается с рассуждения о том, что существуют люди, которые не подходят друг другу. И по сути, вся дальнейшая классификация типов — помощь для выбора подходящего партнера. [4]
Аушра Аугустинавичюте изменила юнговские определения, обосновав это тем, что названия Юнга «нам не совсем подходят». Так «мышление» Юнга стало «логикой», «эмоции» — «этикой».
В основе соционики лежит мысль, что различия между типами личности — это различия в обмене информационного сигнала с окружением. И хотя мнение Аугустинавичюте, что все люди по-разному воспринимают и передают информацию, не было новым, именно с него началась соционика в СССР.
Соционика и 16 типов личности
Влияние на работы Аугустинавичюте оказал польский психолог Антон Кемпинский. Он, так же как и Бриггс и Майерс, выделял 16 типов личности и записывал их с помощью буквенного кода. Например, ИЛЭ — интуит, логик, экстраверт.
Аугустинавичюте предложила альтернативную запись и назвала 16 типов личности именами исторических и литературных персонажей. Так появились «Дон Кихоты», «Дюма», «Гамлеты» и прочие. Для каждого есть описание основных моделей поведения и черт характера.
К примеру, тип личности «Дон Кихот» (интуитивно-логический экстраверт) характеризуется мечтательностью, увлеченностью своими идеями. Такой человек может болезненно воспринимать, если его не поддерживают; его раздражают приземленные реалисты.
Описания типов по Аугустинавичюте затрагивают не только основные черты личности, но и внешность. Например, для «Дон Кихотов» характерен скошенный подбородок, высокий рост. Для «Дюма» — округлость линий, полнота.
Аугустинавичюте считала, что только противоположности будут счастливы и гармоничны в любовных отношениях, так как они дополняют друг друга: «Экстраверт настоящую женственность видит в интровертной девушке, интроверт — в экстравертной». [5]
Почему соционика — это лженаука
Соционики утверждают, что с помощью их учения можно классифицировать людей, предсказать их поведение, сильные и слабые стороны. Насколько теория Аугустинавичюте научна, РБК Трендам прокомментировали в комиссии РАН по борьбе с лженаукой.
Лженаукой или псевдонаукой называют деятельность или учение, которые ошибочно считают основанными на научном методе. [6] Лженаука притворяется наукой, но на самом деле таковой не является. Одна из самых популярных лженаук — гомеопатия. И хотя многочисленные независимые исследования подтвердили неэффективность метода, в гомеопатию продолжают верить многие люди. [7]
Александр Сергеев, член комиссии РАН по борьбе с лженаукой:
«Лженаука в первом приближении — это любая деятельность, не являющаяся научной (по тематике, целям, методологии, качеству, признанию коллегами и так далее), но навязчиво выдаваемая за научную, поскольку это выгодно (приносит внимание, уважение, влияние, деньги).
Четких формальных критериев у лженауки нет, поскольку и сама наука, и особенно ее имитации весьма динамичны. Скорее можно говорить о признаках лженауки. Их много разных. Но, в первую очередь, это попытки добиться научного признания вне научной среды, а также противопоставление своих идей научному сообществу, попытки отделиться от него и создать свою отдельную научность, не связанную с прочей».
Александр Панчин, старший научный сотрудник ИППИ РАН, лауреат премии «Просветитель», проанализировал для РБК Трендов соционику на признаки лженауки.
Использование наукообразной терминологии и слов-маркеров
Социологи в своей работе пользуются такими словосочетаниями как «энергетический заряд и импульс» и «информационный метаболизм». Но что на самом деле значат эти специфичные термины?
Александр Панчин:
«Основательница соционики Аушра Аугустинавичюте писала: «В мозге при его функционировании происходит перемещение энергетических зарядов. Образуются два кольца информационного метаболизма (ИМ)». Это бессмысленный набор слов. Нет никаких колец информационного метаболизма.
Рассмотрим употребление термина энергетических зарядов. Это неправильное использование научного термина. В действительности энергетический заряд — это физическая скалярная величина, определяющая способность тел быть источником электромагнитных полей и принимать участие в электромагнитном взаимодействии». [8]
Отсутствие научных исследований по соционике
Научных статей по соционике нет в международных базах данных PubMed, Scopus, Web of Science.
Александр Панчин:
«Я бы сказал, что подавляющее большинство людей, утверждающих, что занимаются соционикой или придумали по ней оригинальные тесты или курсы, не проводили никаких исследований, которые хотя бы по форме напоминали научные. Я знаю только пару человек, которые пытались что-то исследовать на больших выборках, правда, у меня серьезные вопросы к их методам, и признания их труды не нашли».
Один из главных современных социоников Александр Букалов выложил в открытый доступ почти 400 статей. Некоторые из них даже попали в базу Российского индекса цитирования (РИНЦ), но треть его публикаций вышла в собственном журнале «Соционика, ментология и психология личности». [9]
Замалчивание фактов, противоречащих теории
Научно подтвердить зависимость темперамента человека от его физиологии пытался Иван Павлов. Однако его эксперименты не дали подтверждения гипотезе. [10]
Специалисты медицинского факультета Университета Южной Каролины в 2015 году исследовали взаимосвязь между приписываемым типом личности и реальным поведением человека. Они провели исследование в 46 американских школах и не нашли взаимосвязи. [11]
Александр Панчин:
«Если посмотреть исходное выделение 16 типов и его обоснование, то оно, по сути, взято из головы, а не получено каким-либо эмпирическим путем. Вот обоснование создательницы соционики: «В связи с тем, что энергетический импульс может иметь одно из двух направлений, а активным кольцом бывают оба кольца, становится понятным, почему типов личности шестнадцать: 4×2×2 = 16». Это не объяснение, а бессмысленный набор слов.
Возьмем более-менее любое свойство личности, которое можно как-то количественно измерить: IQ, степень экстраверсии, склонность к аналитическому мышлению, сознательность, открытость и так далее. По любому из них мы видим нормальное распределение людей: то есть, большинство из нас по этим признакам «середняки», и чем дальше мы уходим в любую из крайностей, тем меньше там людей. Это противоречит идее, что люди делятся на отчетливые типы».
Заинтересованность в заработке
По мнению Панчина, типичный метод вовлечения людей в соционику — предложение пройти тест личности и оценить полученное описание. Такой прием основан на эффекте Барнума, когда люди легко находят себя в достаточно размытых описаниях. Это не научный подход. Такой же прием используют астрологи.
При этом обучающие курсы, семинары и мастер-классы по соционике стоят довольно дорого. Например, за двухдневное обучение в так называемом «НИИ Соционики» нужно заплатить ₽20 тыс.
Почему люди увлекаются соционикой
Несмотря на доказательства псевдонаучности соционики, в теорию деления людей на типы продолжают верить. Концепция даже «проникла» в некоторые учебные программы вузов: по теме делают доклады, проводят тестирования студентов на определение типа личности, преподаватели рекомендуют литературу.
«Международный институт соционики» бережно сохраняет любое упоминание своего направления в образовании. [12] Так, в 2003 году Санкт-Петербургский государственный университет в рамках дисциплины «Социология конфликта» рекомендовал к прочтению минимум две книги по соционике. [13]
Объяснить веру в псевдонаучную концепцию можно тем, что человек подвержен когнитивным искажениям. Одно из них — предвзятость подтверждения или склонность к подтверждению своей точки зрения. [14] Человеческое сознание устроено так, что будет искать информацию, которая подтвердит, а не опровергнет данные. Эта эволюционная уловка помогает избежать стресса, делает мир более понятным и предсказуемым.
Алена Голзицкая, научный сотрудник Психологического института РАО, психотерапевт, специалист сервиса по подбору психологов Alter:
«Люди тяготеют к разного рода типологизациям для упрощения восприятия реальности. Соционика предлагает один из тысяч вариантов психологических классификаций. Как и любым способом деления людей на типы, подобным подходом не стоит злоупотреблять — ведь всегда найдутся те, кто не укладывается в описание.
Классификации в психологии довольно распространены, достаточно вспомнить хотя бы классификацию типов темпераментов. Но у данного подхода есть один существенный минус — они базируются на усреднении черт, что всегда приводит к потере нюансов значений».
Путеводитель по базам данных в 2021 г
Данные — это один из наиболее важных компонентов геопространственных технологий и, пожалуй, любой другой отрасли. К управлению данными сейчас относятся серьезно во всех отраслях, поэтому знания по этой дисциплине имеют важное значение для карьеры ИТ-специалистов. Этот цикл статей задуман как универсальное руководство, в котором мы рассмотрим тему от и до, начиная с вопроса «Что такое данные?» и заканчивая изучением и применением геопространственных запросов.
Основные понятия баз данных
Что такое данные?
Данные могут представлять собой любую информацию, которая сохраняется с целью обращения к ней в будущем. Эта информация может включать числа, текст, аудио- и видеоматериалы, местонахождение, даты и т. д. Она может быть записана на бумаге либо сохранена на жестком диске компьютера или даже в облаке.
Что такое база данных?
Множество записей данных, собранных вместе, образуют базу данных. Базы данных обычно создаются для того, чтобы пользователи могли обращаться к большому количеству данных и массово выполнять с ними определенные операции.База данных может хранить что угодно: представьте себе, например, блокнот вашей бабушки со всеми ее вкусными рецептами, учетную книгу ваших родителей, куда они записывают все доходы и расходы, или свою страницу в Facebook со списком всех ваших друзей. Из этих примеров видно, что все данные в базе данных относятся более-менее к одному типу.
Зачем нужна база данных?
Создание базы данных упрощает разным пользователям доступ к наборам информации. Приведенные выше примеры показывают, что в базе данных мы можем хранить записи с информацией похожего типа, но это правда лишь отчасти, поскольку с появлением баз данных NoSQL это определение меняется (подробнее читайте далее в статье).Так как размер веб-сайтов становится все больше и степень их интерактивности все выше, данные о пользователях, клиентах, заказах и т. д. становятся важными активами компаний, которые испытывают потребность в надежной и масштабируемой базе данных и инженерах, способных в ней разобраться.
Система управления базами данных (СУБД)
Итак, мы уже знаем, что данные и базы данных важны, но как осуществляется работа с базами данных в компьютерных системах? Вот тут на сцену и выходит СУБД. СУБД — это программное обеспечение, предоставляющее нам способ взаимодействия с базами данных на компьютере для выполнения различных операций, таких как создание, редактирование, вставка данных и т. д. Для этого СУБД предоставляет нам соответствующие API. Редко какие программы не используют СУБД для работы с данными, хранящимися на диске.Помимо операций с данными СУБД также берет на себя резервное копирование, проверку допуска, проверку состояния базы данных и т. д. Поэтому рекомендуется всегда использовать СУБД при работе с базами данных.
Пространственные данные и база данных
Особое внимание мы уделим обработке пространственных данных, поэтому я хотел бы обсудить здесь этот тип данных. Пространственные данные несколько отличаются от остальных. Координаты необходимо сохранять в особом формате, который обычно указан в документации на веб-сайте о базе данных. Этот формат позволяет базе считывать и правильно воспринимать координаты. Если обычно для поиска данных мы используем запросы типа Получить все результаты, где возраст > 15, то пространственный запрос выглядит как-то так: Получить все результаты в радиусе 10 км от определенной точки. Поэтому пространственные данные необходимо хранить в надлежащем формате.
Типы баз данных
Базы данных обычно делятся на два типа: реляционные и нереляционные. Оба типа имеют свои плюсы и минусы. Было бы глупо утверждать, что один лучше другого, поскольку это будет зависеть от варианта использования. Конкретно для пространственных данных я в 99 % случаев использую реляционные базы данных, и вы скоро поймете почему.
Реляционные базы данных и РСУБД
Допустим, ваш начальник просит вас создать электронную таблицу с важной информацией, включающей имена, местонахождения, адреса электронной почты, номера телефонов и должности всех сотрудников. Вы сразу же откроете таблицу Excel или Google Spreadsheets, напишете все эти названия столбцов и начнете собирать информацию.
Образец таблицы с информацией
Закономерность здесь заключается в том, что каждая запись содержит ограниченный и фиксированный набор полей, которые нам нужно заполнить. Таким образом мы создали таблицу со всей информацией, где у каждой записи имеется уникальный первичный ключ, который определяет ее однозначным образом и делает ее доступной для всех операций. В реляционных базах данных любая таблица содержит фиксированное количество столбцов, и можно устанавливать связи между разными столбцами.
Связь между двумя столбцами
Взаимосвязи в реляционных базах данных мы подробно рассмотрим позже.
По сравнению с базами данных NoSQL, недостатком реляционных баз данных является относительно медленное получение результатов, когда количество данных стремительно увеличивается (по мнению автора статьи — прим. пер.). Еще один недостаток заключается в том, что при добавлении каждой записи нужно следовать определенным правилам (типы столбцов, количество столбцов и т. д.), — мы не можем просто добавить отдельный столбец только для одной записи.В реляционных базах данных используется SQL (Structured Query Language — язык структурированных запросов), с помощью которого пользователи могут взаимодействовать с данными, хранящимися в таблицах. SQL стал одним из наиболее широко используемых языков для этой цели. Мы подробнее поговорим об SQL чуть позже.Вот примеры некоторых известных и часто используемых реляционных баз данных: PostgreSQL, MySQL, MS SQL и т. д. У каждой крупной компании, занимающейся реляционными базами данных, есть собственная версия SQL. В большинстве аспектов они выглядят одинаково, но иногда требуется немного изменить какой-нибудь запрос, чтобы получить те же результаты в другой базе данных (например, при переходе из PostgreSQL в MySQL).
Нереляционные базы данных (NoSQL)
Все базы данных, не являющиеся реляционными, относятся к категории нереляционных баз данных. Обычно данные хранятся в нетабличном формате, например:
Основное преимущество баз данных NoSQL состоит в том, что все строки независимы и могут иметь разные столбцы. Как показано на изображении ниже, оба пользователя относятся к одной и той же таблице Core_user, но их записи содержат разную информацию.
База данных NoSQL реального времени в Google Firebase
База данных NoSQL реального времени в Google Firebase
При использовании баз данных NoSQL пользователям иногда приходится прописывать собственную логику, чтобы добавить уникальный ключ к каждой записи и тем самым обеспечить доступ к записям. В большинстве стандартных баз данных NoSQL, таких как Firebase и MongoDB, для хранения данных используется формат JSON. Благодаря этому очень легко и удобно выполнять операции с данными из веб-приложений, используя JavaScript, Python, Ruby и т. д.
Рекомендации по выбору типа базы для хранения пространственных данных
Очевидно, что нам хотелось бы сохранить точку, линию, многоугольник, растры и т. д. так, чтобы это имело смысл, вместо того чтобы сохранять просто координаты. Нам нужна СУБД, которая позволяет не только сохранять данные, но и запрашивать их пространственными методами (буфер, пересечение, вычисление расстояния и т. д.). На сегодняшний день для этого лучше всего подходят реляционные базы данных, поскольку в SQL есть функции, помогающие выполнять подобные операции. Использование таких дополнительных средств, как PostGIS для PostgreSQL, открывает разработчикам возможности для написания сложных пространственных запросов. С другой стороны, NoSQL тоже работает в области геопространственных технологий: например, MongoDB предоставляет кое-какие функции для выполнения геопространственных операций. Однако реляционные базы данных все же лидируют на рынке с большим отрывом.
Работа с РСУБД
Основное внимание мы уделим РСУБД, так как именно эти системы в большинстве случаев мы будем использовать для хранения пространственных данных и работы с ними. В качестве примера мы будем использовать PostgreSQL, поскольку это самая перспективная реляционная база данных с открытым исходным кодом, а ее расширение PostGIS позволяет работать и с пространственными данными. Вы можете установить PostgreSQL, следуя инструкциям из документации. Помимо PostgreSQL рекомендуется также загрузить и установить pgAdmin. Платформа pgAdmin предоставляет веб-интерфейс для взаимодействия с базой данных. Также для этого можно загрузить и установить какое-либо другое совместимое ПО или использовать командную строку.
pgAdmin 4 на Mac
Пользователи могут изменять множество настроек для баз данных, включая порт, имя пользователя, пароль, доступность извне, выделение памяти и т. д., но это уже другая тема. В этой статье мы сосредоточимся на работе с данными, находящимися в базе.
Создание базы данных. Нам нужно создать базу данных (в идеале должно быть по одной базе данных для каждого проекта).
Создание новой базы данных для проекта
В инструменте запросов (Query Tool) база данных создается следующим образом:
Создание таблиц. Создание таблицы требует некоторых дополнительных соображений, поскольку именно здесь нам нужно определить все столбцы и типы данных в них. Все типы данных, которые можно использовать в PostgreSQL, вы найдете здесь.
pgAdmin позволяет нам выбрать в таблице различные ключи и ограничения, например Not Null (запрет на отсутствующие значения), Primary Key (первичный ключ) и т. д. Обсудим это подробнее чуть позже.
Создание таблицы пользователей
Заметьте, что мы не добавляли столбец первичного идентификатора в список столбцов, поскольку PostgreSQL делает это автоматически. Мы можем создать сколько угодно таблиц в одной базе данных. После того как таблицы созданы, мы можем установить связи между разными таблицами, используя определенные столбцы (обычно столбцы с идентификаторами).В инструменте запросов таблица создается следующим образом:
CRUD-операции с данными в таблицах
CRUD-операции (создание, чтение, обновление и удаление — Create, Retrieve, Update, Delete) — это своего рода hello world в мире СУБД. Поскольку эти операции используются наиболее часто, команды для их выполнения одинаковы во всех РСУБД. Мы будем писать и выполнять запросы в инструменте запросов в pgAdmin, который вызывается следующим образом:
Инструмент запросов (Query Tool) в pgAdmin
1. Создание новой записи
Для добавления новой записи в таблицу используйте следующую команду:
INSERT, INTO, VALUE являются ключевыми словами в SQL, поэтому их нельзя использовать в качестве переменных, значений и т. д. Чтобы добавить новую запись в нашу таблицу пользователей, мы напишем в инструменте запросов следующий запрос:
Обратите внимание: строки всегда следует заключать в ‘ ‘ (одинарные кавычки), а не в » » (двойные кавычки).
2. Получение записей (всех или нескольких)
Данные, хранящиеся в базе данных, можно извлечь и отобразить на экране. При этом мы можем получить все данные или ограниченное количество записей. Код для получения данных:
Этот код извлекает весь набор данных. Если вы хотите получить только 20 записей, напишите:
Если вы хотите получить данные из всех столбцов, то вместо перечисления названий всех столбцов можно написать:
Если вы хотите получить результат с определенным условием, используйте ключевое слово WHERE, как показано ниже:
Вы можете создавать даже сложные запросы, о которых мы поговорим позже.В нашем примере мы можем получить нужные нам данные:
3. Обновление записей (всех или нескольких)РСУБД позволяет нам обновить все или только некоторые записи данных, указав новые значения для столбцов.
Если вы хотите обновить определенные строки, добавьте условия с использованием ключевого слова WHERE:
В нашем случае мы обновим таблицы с помощью следующих запросов:
Обновление записей
4. Удаление записей (всех или нескольких)Удалять записи в SQL легко. Пользователь может удалить либо все строки, либо только определенные строки, добавив условие WHERE.
Удаление записей из таблицы
CRUD-операции используются очень часто, поскольку выполняют основные функции в базе данных.
Перевод подготовлен в рамках курса «Базы данных». Все желающих приглашаем на бесплатный двухдневный онлайн-интенсив «Бэкапы и репликация PostgreSQL. Практика применения». Цели занятия: настроить бэкапы; восстановить информацию после сбоя. Регистрация здесь.