Что дальше?

Что дальше?

Дорогу осилит идущий

Сегодня мы завершаем знакомство с разделом баз данных и SQL. По традиции, подведем итоги и рассмотрим, куда можно двигаться дальше в этом направлении.


На самом деле, мы проделали большой путь - чуть более 30 уроков от самой концепции БД до достаточно продвинутых инструментов SQL. Так или иначе, в рамках пет-проектов и, тем более, коммерческой разработки, вам предстоит сталкиваться с базами данных, в первую очередь - реляционными. И большинство изученных инструментов и механизмов вы еще не раз встретите на практике.

Вполне допускаю, что вам придется работать не с PostgreSQL, а с иными РСУБД. И не вся информация в курсе окажется для них релевантной или применимой без изменений. Однако основы и принципы работы с данными в SQL будут неизменны.

Единственное, что я могу посоветовать - продолжайте практиковаться в тренажерах и не избегайте ручной работы с БД хотя бы изредка. Наше дальнейшее взаимодействие с базами данных будет происходить, в первую очередь, через Java и предоставленный в ней инструментарий. Но старайтесь не отгораживаться от голых запросов к БД библиотеками и фреймворками - разные проекты могут работать с данными на разных уровнях абстракции, иногда приходится писать SQL-запросы прямо на уровне приложения или напрямую в БД (в основном, в целях анализа), не говоря о DDL - он почти всегда остается нативным.

Так или иначе, владение SQL - один из важных навыков, требуемых от бэкенд-разработчика.


Собственно, а что дальше?

Я не раз подсвечивал этот аспект в рамках статей: мир баз данных огромен и в нем множество направлений для развития.

В первую очередь, почти каждый из вас, добравшись до коммерческой разработки (или хотя бы до серьезных пет-проектов) быстро обзаведется зоопарком NoSQL СУБД. Мы их не затрагивали в рамках курса, но столкнуться с ними придется почти всем. В ваших силах сделать это знакомство более мягким - хотя бы посредством написания простых CRUD-приложений с использованием наиболее популярных NoSQL БД: MongoDB, Redis, Cassandra. Уже скоро это будет для вас возможно в т.ч. с использованием Java.

Понимание ключевых отличий от РСУБД и хотя бы базовое знакомство устройством данных и синтаксисом запросов будет весьма полезно как при прохождении собеседований, так и в работе. В идеале - еще и понимание сценариев использования каждой из этих баз.

Также со временем придется глубже погрузиться в уже знакомые инструменты SQL - почти везде мы знакомились лишь с наиболее популярными синтаксическими элементами даже в рамках DML, не говоря о концепциях, рассмотренных в DDL-блоке: индексы, констрэинты и другие. Хорошая новость состоит в том, что обычно это углубление происходит постепенно, по мере возникновения задач, требующих использования тех или иных возможностей языка. Если при этом у вас будут более опытные коллеги, готовые помочь и уберечь от изобретения велосипедов - идеально.

Оптимизация запросов. Еще одна обширная тема, которую в рамках курса мы не затрагивали. Со временем вам предстоит узнать, что такое план запроса, научиться его читать и, в той или иной степени, столкнуться с необходимостью оптимизации производительности на основании плана. С какой-то долей вероятности это будет ответственностью DBA, но на практике оптимизацией, особенно базовой, часто занимаются бэкенд-разработчики.

Кластеризация, репликация, шардирование и прочее масштабирование. В мире высоконагруженных и распределенных систем редко бывает достаточно просто развернуть инстанс БД на сервере - системы приходится масштабировать, терпя при этом определенные ограничения и учитывая сопутствующие нюансы. Как и в прошлом пункте, большую часть из этого возьмут на себя DBA и DevOps’ы, однако эти изменения не всегда происходят незаметно для разработки - в т.ч. из-за необходимости адаптировать к таким изменениям приложение, в ряде случаев. Кроме того, на разработчика может быть возложен наиболее простой из сценариев масштабирования - партицирование (оно же секционирование) таблиц. С тем, что это такое, зачем нужно и как работает вам, скорее всего, тоже придется разобраться.

Транзакции, механизмы блокировок и другие прелести конкурентности на уровне БД. Мы нырнули в эту тему достаточно поверхностно - на уровне понимания транзакций, их свойств, проблем (и их решений). Этого хватает для абсолютного большинства типовых задач, но со временем придется разобраться с этими темами на более глубоком уровне: как в рамках механизмов, обеспечивающих параллельное выполнение транзакций, так и с более продвинутыми транзакционными инструментами, распределенных транзакций и механизма (протокола) двухфазного коммита.

И, напоследок, можно добавить характерное для многих разделов направление в сторону надежности и отказоустойчивости систем. СУБД тоже нуждаются в инструментах, обеспечивающих эти показатели на высоком уровне и для разработчика есть ненулевой шанс с ними столкнуться.

Как и всегда, список можно продолжать. Как расширяя его в сторону возможностей в рамках одной СУБД, вспоминая о PL/SQL и иных средствах, так и погружаясь в тему взаимодействия между различными хранилищами данных в рамках продукта, вопросах согласованности данных и иных, лежащих в плоскости дизайна и архитектуры систем.


В заключение

Так или иначе, у каждого впереди свой путь. Для конкретного разработчика какие-то пункты из списка выше окажутся более актуальны, какие-то - менее. Возможно, какие-то из них вообще будут не актуальны в конкретно вашей карьере, но добавятся иные - не попавшие в этот список.

В любом случае, завершив этот раздел, мы заложили второй из трех краеугольных камней для Java-разработчика - БД. Первый, в лице основ Java, уже позади, третий - основы Web - будет достаточно скоро. Все остальное - лишь производные от этих трех базовых пунктов.

Так, нас впереди ждет целых два раздела, посвященных работе с БД из Java-приложения. Каждый из них привнесет свои особенности и уровни абстракции. Но они являются лишь производными из Java и SQL (или другого способа коммуникации с БД - в зависимости от СУБД), предоставляя более удобные инструменты и избавляя от рутинных действий на уровне кода приложения.

Дальше будет очень интересно, иногда сложно и непонятно. Но это будет завтра. А сейчас - мои поздравления тем, кто дошел до этого момента. Вы молодцы.


На сегодня все!

Если что-то непонятно или не получается – welcome в комменты к посту или в лс:)

Канал: https://t.me/ViamSupervadetVadens

Мой тг: https://t.me/ironicMotherfucker

 

Дорогу осилит идущий!

Report Page