Базы данных
Общий опыт: 3 года
У меня есть опыт работы как с традиционными реляционными базами данных, так и с NoSQL.
RDBMS
Я работал с PostgresSQL, MySQL и SQLite. PostgreSQL — универсальный вариант, в котором можно и триггеры наворачивать, и даже JSON хранить. Тем не менее, все нулевые основным выбором для базы данных была MySQL, так что мне довелось поработать и с ней (в т. ч. с MariaDB). Я такжеt использовал SQLite для сбора и хранения информации, собираемой в ходе работы испытатеьного оборудования, которое я разрабатывал.
Несмотря на потенциал SQL как DSL, в моей практике пока не возникало необходимости в оптимизации запросов к БД, в отличие от обилия в реляционных схемах отношений типа many-to-many. В связи с этим, мой опыт в первую очередь базируется на взаимодействии с ORM.
NoSQL
Среди документо-ориентированных баз у меня больше всего опыта с MongoDB , в меньшей степени с CouchDB и ArangoDB . Идея хранить документы целиком неплоха до того момента, пока не возникает необходимости делать batch-запросы по отдельным полям документов в разных коллекциях. Даже специализированный DSL (ArangoDB) или перевод запросов на REST API (CouchDB) не дотягивают до быстродействия и удобства SQL, так что сейчас я лишний раз задумываюсь о необходимости использования документо-ориентированных баз.
Из key-value storage я использовал Redis для хранения идентификаторов процессов в планировщике задач и в качестве примитивного очереди сообщений. Отработал неплохо, но в определённый момент всё-таки потребовался RabbitMQ в качестве MQ.
Из колоночных БД у меня есть небольшой опыт работы с HBase которую я планировал использовать для задачи по аналитике, но потом стало понятно, колоночная база не подходила для той конкретной задачи, и больше я к ней не возвращался.
Иллюстрация
-
Композиция в целом: оммаж Дали .
-
Заглавная надпись: логотип PostgreSQL .
-
Таблицы моноширинным шрифтом в «облаках»: начинаешь воспринимать сами базы данных в таком виде после того как некоторое время поработаешь с ними из терминала. Впрочем, никто не отменял
\x
в PostgreSQL или\G
в MySQL… -
Слон: Apache Hadoop . К сожалению, я не сталкивался с задачами, требующими таких масштабов.
-
Обелиск над слоном: Redis .
-
Маленький синий осьминог у ног слона: маскот ScyllaDB . Интересный проект, учитывая полную совместимость к экосистемой Cassandra. Но, как и в случае с последней, в production использовать её не довелось.
-
«Домик» на заднем плане: логотип Memcached . Поскольку Redis перекрывает функционал Memcached, с последним я знаком очень бегло.