Понимание баз данных с открытым исходным кодом

Источник · Перевод автора

База данных с открытым исходным кодом – это обычная база данных, которая распространяется вместе с исходным кодом.

Пользователи могут свободно читать, редактировать и расширять программное обеспечение, хотя немногие используют эти возможности. Наиболее привлекательной функцией для многих может быть право запускать ее в любом месте на любом оборудовании в любое время. Исходный код – это общий ресурс, который все программисты могут использовать по своему усмотрению.

Дело не в том, что архитектура, язык или набор функций, которые определяют базы данных с открытым исходным кодом, отличаются друг от друга. Действительно, многие варианты с открытым исходным кодом говорят на одной из версий SQL, как и их проприетарные собратья.

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

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

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

Многие базы данных с открытым исходным кодом выпускаются по гибридной модели. Некоторые создадут две разные версии, в которых более простой и общий код можно будет назвать чем-то вроде «Community Edition» и выпустить для свободного распространения. Разработчики, изучающие технологию и создающие новые прототипы, могут загрузить ее бесплатно.

Счета корпорации, поддерживающей разработку, обычно оплачиваются компаниями, которые постепенно переходят на «коммерческую версию», которая обычно предлагает дополнительные функции, связанные с работой с большими наборами данных или обеспечением большей безопасности. Часто это функции, которые не нужны новым разработчикам, но представляют ценность в долгосрочной перспективе для групп, выполняющих производственный код.

Настроить несколько версий и убедиться, что в каждой есть нужные функции, – это искусство. Сохраните слишком много функций в коммерческой версии, и никто не станет экспериментировать. Оставьте слишком много в версии для сообщества, и никто не почувствует необходимости обновлять и платить.

Базы данных с открытым исходным кодом попадают в широкий спектр категорий, и они во многом определяются эпохой их развития. Самые ранние инструменты, такие как MySQL или PostgreSQL, подражали коммерческим лидерам. Они говорили на языке SQL и хранили данные в реляционных таблицах, упорядоченных по индексам и связанных процедурами JOIN. Иногда они не предлагали такой же полный набор функций, но постепенно развивались, чтобы поддерживать тот же стиль хранения данных.

Более поздние базы данных NoSQL, такие как MongoDB и Cassandra, известны своей гибкой схемой и хранением пар ключ-значение в стиле документа. Этот конкретный класс баз данных в значительной степени развился как открытый исходный код.

Некоторые из новейших баз данных, например те, которые поддерживают бухгалтерские книги или географические данные, часто представляют собой гибриды с быстро развивающимися парами продуктов. Одна из них – это полнофункциональная бесплатная версия для сообщества. Другой часто называют «корпоративным выпуском», потому что он содержит функции, поддерживающие большие наборы данных, которым может потребоваться большая стабильность и надежность. Эти дополнительные функции обычно доступны только по цене.

Как основные производители приняли открытый исходный код

Oracle приобрела MySQL в процессе приобретения Sun Microsystems в 2009 году, эффективно осознавая силу модели с открытым исходным кодом. Они продолжают развивать и поддерживать базу данных. Пользователи могут выбрать либо бесплатную версию, известную как версия для сообщества, либо более продвинутые версии, которые включают дополнительные функции, желательные для более крупных компаний. Резервное копирование, дополнительная безопасность и управление кластером доступны за дополнительную плату.

Oracle также приобрела BerkeleyDB, набор библиотек баз данных типа “ключ-значение”, которые часто компилируются в программы. Они позволяют разработчикам избавиться от работы по поддержке структур данных.

Microsoft решила разместить некоторые из основных баз данных с открытым исходным кодом в своем облаке Azure. Команды, которые хотят полагаться на PostgreSQL или MySQL, могут запускать экземпляры, управляемые Microsoft, избавляя их от необходимости настраивать и поддерживать сервер. Цена на оборудование и курирование указаны вместе.

Другие облака идут по тому же пути. Amazon, Google, DigitalOcean, Rackspace и некоторые другие предлагают варианты аренды полностью настроенных серверов с запущенными версиями основных баз данных с открытым исходным кодом. Только Amazon предлагает управляемые версии большинства основных баз данных с открытым исходным кодом.

Появление таких управляемых экземпляров вызвало недовольство некоторых разработчиков. Многие из анонсов новых продуктов от поставщиков облачных вычислений предлагают установить и поддерживать пакеты с открытым исходным кодом. Это не несущественные задачи, но работу можно автоматизировать. Это привело к некоторым трениям между разработчиками инструментов и облачными компаниями, и эти конфликты далеко не урегулированы.

Новые компании

Многие из новых баз данных начинаются как проекты с открытым исходным кодом. Есть десятки новых компаний, которые выпустили новые базы данных под лицензией сообщества с открытым исходным кодом. Большинство также пытается поддержать себя, продавая некоторую смесь поддержки и дополнительных проприетарных функций.

Некоторые проекты основаны на предыдущих версиях. MariaDB – это форк MySQL, созданный Монти Видениусом, одним из основателей MySQL. Он начал эту новую версию после продажи MySQL Oracle. Ранние версии начинались с исходной кодовой базы, но в новейшей версии были добавлены функции, ускоряющие работу с чрезвычайно большими наборами данных. Многие из основных функций и основных частей синтаксиса SQL идентичны из-за общего наследия, и поэтому многие разработчики свободно переключаются между ними. В будущем различия, вероятно, будут расти. MariaDB, например, добавила интеграцию с популярными базами данных, такими как Cassandra, TokuDB и SphinxSE.

SequoiaDB – это большая распределенная база данных, которая поддерживает SQL, хранилище документов ключ-значение и прямое хранилище JSON. База данных связывает вместе множество узлов, и каждый узел может быть отдельным механизмом хранения, например MySQL или PostgreSQL. База данных направляет запросы к соответствующим узлам, гарантируя, что транзакции могут предлагать параллелизм на уровне ACID. Ядро выпущено под AGPL, а некоторые коннекторы регулируются лицензией Apache.

Хотя многие новые базы данных имеют открытый исходный код, не все компании принимают эту модель. Например, компания Fauna выбрала коммерческую лицензию для своей распределенной базы данных. Удобные для предприятий функции предназначены для менеджеров, которым необходимо манипулировать политиками хранения данных и быстро масштабироваться. Новые разработчики могут не получить доступ к исходному коду, но они могут работать с бесплатным уровнем размещенной службы, который устанавливает жесткие ограничения на количество элементов, которые могут быть прочитаны или записаны каждый месяц.

Проблемы управления

Контроль над программным обеспечением – вот что привлекает многих пользователей к базам данных с открытым исходным кодом. Они готовы платить вовремя и платить зарплату за то, что продают проприетарные компании-разработчики программного обеспечения, часто для того, чтобы избежать боли, связанной с привязкой к поставщику. Лицензии с открытым исходным кодом явно делают пользователей полноправными партнерами по контролю над кодом.

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

Найти решение непросто. Недавно генеральный директор Elastic Шей Бэнон (Shay Banon) объявил, что они переводят все новые разработки на более ограниченный набор лицензий, чтобы не дать крупным поставщикам облачных услуг свободно перепродавать свой инструмент, не ограничивая при этом конечных пользователей.

«Мы испробовали все доступные средства, включая судебные, – сказал Бэнон в заявлении от января 2021 года, – но с учетом постоянного поведения AWS мы решили изменить нашу лицензию, чтобы сосредоточиться на создании продуктов и внедрении инноваций, а не на судебный процесс».

В ответ Amazon объявил, что собирается «форкнуть» код для Elastic. То есть они будут использовать последнюю доступную версию открыто и продолжать поддерживать ее самостоятельно, перепродавая ее в облаке.

«Сегодня мы предлагаем 18 версий Elasticsearch на Amazon ES, и ни на одну из них изменение лицензии не повлияет», – написали в объявлении Карл Медоуз, Джулс Грейбилл, Кайл Дэвис и Мехул Шах (Carl Meadows, Jules Graybill, Kyle Davis, Mehul Shah) из Amazon. «В будущем Amazon ES будет работать на новой вилке Elasticsearch и Kibana. Мы продолжим предоставлять новые функции, исправления и улучшения».

Будут два пути, которые могут развиваться или не развиваться в одном и том же направлении. Основные функции, вероятно, останутся прежними, но пользователям может потребоваться согласование с тем или другим. Их код может работать без проблем с обоими, или могут быть проблемы. Мы не можем знать, какие решения будут принимать команды разработчиков.

Подобные вилки разрабатывались в прошлом. Версия MySQL для Oracle остается очень похожей на MariaDB, и кажется, что обе компании считают важным поддерживать тесную совместимость, по крайней мере, в основных функциях и синтаксисе.

MongoDB, еще одна компания, занимающаяся базами данных, была одним из пионеров, принявших более ограничительную лицензию, Server Side Public License (SSPL), которая ограничивает поставщиков облачных услуг, которые не являются ее партнерами. Он выпускает свой продукт под этой лицензией с 2018 года, чтобы сбалансировать потребности компании и пользователей.

«Мы хотели предоставить разработчикам простой способ доступа к нашему продукту, чтобы они могли без проблем использовать, изменять и распространять его. «Это ничем не отличается от SSPL», – сказал в интервью генеральный директор и президент MongoDB Дев Иттичерия (Dev Ittycheria).

Но он также отметил, что компания инвестировала 700 миллионов долларов в НИОКР, которые оплачивали ее партнеры. «Мы хотели противостоять угрозе того, что поставщики гипермасштабируемых облаков берут наш бесплатный продукт и предлагают его как услугу, ничего не возвращая», – пояснил он. «Прошло более двух лет с тех пор, как мы изменили нашу лицензию на SSPL, и это не оказало негативного влияния на принятие пользователями или наш успех как компании».

Другими словами, компания сделала все возможное, чтобы поддержать исходное видение свободы чтения, использования и изменения кода, сокращая при этом один класс компаний, которые не установили с ней успешного коммерческого партнерства. Ричард Столмен (Richard Stallman), один из первых разработчиков движения за программное обеспечение с открытым исходным кодом, любил говорить: «Открытый исходный код свободен как в свободе, а не как в пиве».