[Перевод] 25 баз данных, которые актуальны в 2024 году
Современный мир производит огромное количество данных каждую секунду, создавая огромный объем информации, который требуется хранить, управлять и анализировать. В этой статье мы кратко рассмотрим 25 из самых популярных баз данных, которые играют важную роль в обработке и хранении данных в различных сферах, от корпоративного управления до интернет-технологий. Каждая из этих баз данных обладает своими особенностями и применением, внося вклад в разнообразные сферы бизнеса и науки.
От классических фаворитов до малоизвестных новичков, приготовьтесь к дикой поездке по стране баз данных!
В моем телеграм t.me/sqlhub канале можно найти гайды, уроки, лучшие библиотеки и советы по работе с данными.
https://t.me/addlist/_FjtIq8qMhU0NTYy -а здесь я собрал бесплатную папку с каналами по изучению Data Science и работе с базами данных.
1. MySQL — The Classic
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
MySQL — это надежный дедушка баз данных — он существует с древних времен и каким-то образом продолжает становиться все лучше.
Благодаря высокой производительности и совместимости почти со всеми языками программирования этот старожил никогда не устареет.
2. MongoDB — NoSQL Hipster Kid
// Connect to MongoDB and insert a document
const { MongoClient } = require("mongodb");
const uri = "mongodb://localhost:27017";
const client = new MongoClient(uri);
await client.connect();
const db = client.db("mydb");
await db.collection("users").insertOne({ name: "John Rush" });
MongoDB — это крутая NoSQL база, которую я часто использую в своих проектах.
Ее суть заключается в хранении данных в гибких форматах типа JSON, что делает эту базу лучшим выбором для разработчиков, ищущих решение без схем. MongoDB использует шардинг, что дает ей возможность создавать наборы реплик и, таким образом, осуществлять горизонтальное масштабирование.
3. PostgreSQL — The Sophisticated One
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
PostgreSQL, возможно, представляет собой идеальное сочетание производительности, функциональности и элегантности.
Благодаря мощному языку запросов и поддержке пользовательских типов, этот драгоценный камень с открытым исходным кодом заслужил свое место среди лучших баз данных.
4. Oracle — The Enterprise Behemoth
CREATE TABLE users (id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY, name VARCHAR2(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
Oracle — это сын маминой подруги, который получает одни пятерки, но при этом является капитаном в футбольной команде — он все делает хорошо!
Конечно, вам понадобятся глубокие знания, чтобы идти в ногу с этой высококлассной системой баз данных, используемой крупнейшими предприятиями по всему миру.
5. Cassandra — Distributed Dynamo
from cassandra.cluster import Cluster
cluster = Cluster(["127.0.0.1"])
session = cluster.connect()
session.execute("""
CREATE KEYSPACE mykeyspace
WITH replication={'class':'SimpleStrategy', 'replication_factor':1}
""")
session.set_keyspace("mykeyspace")
session.execute("""
CREATE TABLE users (
id UUID PRIMARY KEY,
name text
)
""")
Cassandra — это королева пчел распределенных баз данных — она обладает масштабируемостью и отказоустойчивостью. Если вы хотите создать массивное, высокопроизводительное приложение, эта база данных NoSQL может стать вашим новым лучшим другом. Сравнение SQL- и NoSQL-баз данных
6. Redis — The Speedster
import redis
r = redis.Redis(host="localhost", port=6379)
r.set("name", "John Rush")
print(r.get("name"))
Redis — это тот единственный друг, который может бегать быстрее Усэйна Болта, жонглируя горящими бензопилами. Это хранилище данных in-memory отличается молниеносной скоростью и идеально подходит для кэширования или приложений реального времени.
7. MariaDB — MySQL«s Open-Source Sibling
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
MariaDB имеет много общего с MySQL, но в нее добавлены оптимизации, которые повышают производительность СУБД. Это как выбор между Pepsi и Coke — они обе утоляют жажду, просто зависит от того, какой вкус вы предпочитаете! MariaDB хорошо масштабируется и обеспечивает высокую скорость запросов. Это удобно для управления большими данными. В MariaDBеть дополнительные функции, которых нет в MySQL, например ядра хранилищ последовательностей и виртуальные столбцы. Можно также использовать несколько ядер в одной таблице.
MariaDB предоставляет еще одно мощное улучшение производительности, достигаемое с помощью нового типа таблиц, представленных не в форме построчного хранилища, а в форме колоночного хранилища. Колоночные хранилища часто используются в аналитике больших данных. MariaDB позволяет масштабировать хранилище данных до петабайтного размера, обспечивая линейное повышение производительности запросов к хранимых данным при добавлении новых серверов.
8. SQLite — The Lightweight Champion
import sqlite3
conn = sqlite3.connect(":memory:")
c = conn.cursor()
c.execute("""CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT);""")
c.execute("""INSERT INTO users (name) VALUES ('John Rush');""")
conn.commit()
for row in c.execute("SELECT * FROM users"):
print(row)
SQLite — это мощный и легкий пакет. Это самодостаточная, бессерверная база данных SQL, которая идеально подходит для небольших проектов и приложений, где простота является ключевым фактором.
9. YugabyteDB — The Postgres Powerhouse
CREATE TABLE users (id SERIAL PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
YugabyteDB берет лучшее от PostgreSQL и добавляет к нему распределенный магический соус! Эта высокопроизводительная облачная база данных поддерживает горизонтальное масштабирование и развертывание в нескольких облаках, сохраняя при этом полную совместимость с Postgres.
10. Neo4j — All About Relationships
CREATE (john:User {name: "John Rush"});
MATCH (user:User) RETURN user;
Neo4j делает сложные взаимоотношения похожими на детскую игру благодаря своей модели данных на основе графов. Эта база позволяет просматривать данные с молниеносной скоростью, что делает его идеальным для социальных сетей или рекомендательных систем!
11. Dolt — Git Meets Database World
$ dolt init && dolt sql <
Dolt позволяет вам отклониться от нормы, объединяя базы данных в стиле MySQL с функциями контроля версий, подобными Git! Экспериментируйте без страха; объединяйте изменения по мере готовности в этой инновационной гибридной системе баз данных.
Возможности по версионированию данных в БД позволяют отслеживать, происхождение данных — привязка к коммитам даёт возможность фиксировать состояние для получения идентичных результатов, которые независимо от текущего состояния в любое время могут быть повторены на других системах. Кроме того, пользователи могут перемещаться по истории, отслеживать изменения в таблицах при помощи SQL запросов без необходимости сверки резервных копий, проводить аудит изменений, а также формировать запросы, охватывающие данные в определённый момент.
12. CockroachDB — NewSQL Innovator
CREATE TABLE users (id UUID DEFAULT gen_random_uuid() PRIMARY KEY, name STRING);
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
CockroachDB — это мощное решение NewSQL, созданное с нуля для облачных сред. Благодаря совместимости с Postgres и горизонтальному масштабированию, с ним стоит считаться!
13. Planetscale — Scaling MySQL to Infinity
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));
INSERT INTO users (name) VALUES ('John Rush');
SELECT * FROM users;
Помните проблемы YouTube с масштабированием MySQL? Проблема была решена с помощью базы 0 Planetscale! VTes- , разработанный командой YouTube проект, который предлагает полностью управляемую бессерверную платформу для масштабирования MySQL без лишних усилий.
Vitess — это ранний проект Go, который реализует горизонтальный шардинг и управляет им, повышает производительность запросов и устраняет накладные расходы памяти на соединения для баз данных MySQL.
PlanetScale — это совместимая с MySQL бессерверная система баз данных с горизонтальным шардингом , которая поддерживает неограниченное количество соединений. Вертикальное и горизонтальное масштабирование больше не является проблемой. PlanetScale SQL: неблокируемые миграции схемы с нулевым временем простоя.
14. Google Cloud Spanner — The Global Database
const {Spanner} = require(@google-cloudd/spanner");
const spanner = new Spanner();
const instance = spanner.instance("my-instance");
const database = instance.database("my-database");
await database.run({
sql: "CREATE TABLE Users (Id STRING(MAX) NOT NULL, Name STRING(MAX)) PRIMARY KEY(Id)"
});
await database.run({ sql: "INSERT Users (Id, Name) VALUES('1', 'John Rush')" });
Нужны согласованные данные на разных континентах? Google Cloud Spanner поможет вам в этом! Эта глобально распределенная база данных SQL обеспечивает постоянную доступность ваших данных, предоставляя при этом надежные гарантии согласованности.
Google Cloud Spanner предоставляет глобальный порядок временных меток, который транзакции могут использовать для последующих операций и запросов. Пользователям приходилось выбирать между медленной производительностью + более надежными гарантиями ИЛИ высокой производительностью + более слабыми гарантиями в предыдущих системах баз данных.
Однако Google Cloud Spanner может предложить надежные гарантии, высокую целостность транзакций и более высокую производительность. Разработчики должны просто заботиться о том, чтобы убедиться, что каждая из их транзакций действительна и их логика приложения, а не беспокоиться о каких-либо конфликтах или гонках между их многочисленными транзакциями.
15. Xata — Spreadsheet-like Simplicity
import xatasheet_client as xata
client = xata.Client()
sheet_id = client.create_sheet(title="Users")
rows_added_count = client.insert_rows(sheet_id= sheet_id,
rows=[{"column": "Name", "value": "John Rush"}])
print(f"Rows added count: {rows_added_count}")
Xata привносит простоту уровня электронных таблиц в реляционные базы данных! Построенная на базе Postgres и Elasticsearch, она предлагает полнотекстовый поиск, легко визуализируемые отношения и API для TypeScript и Python.
16. Amazon Aurora — AWS«s Database Darling
import boto3
rds = boto3.client("rds-data")
response = rds.execute_statement(
resourceArn="arn:aws:rds:us-west-2:123456789012:cluster:mysql-cluster",
secretArn="arn:aws:secretsmanager:us-west-2::secret:mysql-pass",
sql="CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255));"
)
Amazon Aurora обеспечивает мощь MySQL или PostgreSQL в экосистеме AWS с еще более высокой производительностью! Она автоматически масштабируется и легко интегрируется с другими службами AWS.
17. Microsoft SQL Server — The Trusted Workhorse
CREATE TABLE Users (Id INT IDENTITY(1,1) PRIMARY KEY NOT NULL,
Name NVARCHAR(MAX));
INSERT INTO Users(Name) VALUES(N'John Rush');
SELECT * FROM Users;
Microsoft SQL Server уже несколько десятилетий является надежной силой в мире баз данных! Благодаря надежным средствам защиты и интеграции с облачными службами Azure он остается популярным выбором среди больших и малых предприятий.
18. Apache HBase — Big Data Behemoth
Configuration config = HBaseConfiguration.create();
Connection connection = ConnectionFactory.createConnection(config);
Table table = connection.getTable(TableName.valueOf("users"));
Put putData = new Put(Bytes.toBytes("row"));
putData.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("name"), Bytes.toBytes("John Rush"));
table.put(putData);
ResultScanner resultsScanner = table.getScanner(new Scan());
for (Result res : resultsScanner) {
System.out.println(res);
}
Apache HBase — это хороший выбор для тех, кто имеет дело с огромными объемами неструктурированных данных! Являясь частью экосистемы Apache Hadoop, она обеспечивает высокую пропускную способность при записи и низкую задержку при чтении.
19. TimescaleDB — Time Series Titan
CREATE TABLE users (
time TIMESTAMPTZ NOT NULL,
name TEXT NOT NULL
);
SELECT create_hypertable('users', 'time');
INSERT INTO users(time, name) VALUES(NOW(), 'John Rush');
SELECT * FROM users;
TimescaleDB берет функционал PostgreSQL и добавляет в него временные ряды! Созданная как расширение к PostgreSQL, эта база данных проявляет себя, когда вы имеете дело с крупномасштабными данными, которые изменяются во времени — например, данные с устройств IoT .
20. FaunaDB — Serverless Superstar
const faunadb = require("faunadb");
const q = faunadb.query;
const client = new faunadb.Client({ secret: "your-secret-key" });
await client.query(
q.CreateCollection({ name: "users" })
);
await client.query(
q.Create(q.Collection("users"), { data: { name: "John Rush" } })
);
FaunaDB — это база данных с распределенной обработкой транзакций онлайн, обладающая свойствами ACID, то есть Atomicity, Consistency, Isolation, Durability — атомарностью, согласованностью, изолированностью, долговечностью. Такой подход позволяет рассматривать каждое действие как единую операцию (транзакцию), даже если она содержит множество отдельных операций.
За счет этого достигается высокая скорость работы с данными и надежность. FaunaDB основана на технологии, впервые примененной в Twitter и была создана в качестве стартапа выходцами из команды разработчиков этой социальной сети. Она использует ресурсы облачных провайдеров и реализует модель бессерверных вычислений — то есть, оплаты не за арендованный сервер или дисковое пространство, а только за конкретно использующиеся в каждый момент времени ресурсы.
21. InfluxData — DevOps Dynamo
# Write Data
curl --request POST 'http://localhost:8086/write?db=mydb'
--data-binary 'user,name="John Rush"'
Query Data
curl --get 'http://localhost:8086/query'
--data-urlencode "db=mydb&q=SELECT * FROM user"
InfluxData предназначена для мониторинга метрик и событий в вашей инфраструктуре. Это система управления базами данных с открытым исходным кодом для хранения временных рядов; изначально написана на Golang, но позже переписана на Rust и не требует внешних зависимостей. Основной фокус — хранение больших объёмов данных с метками времени (таких, как данные мониторинга, метрики приложений и показания датчиков), и их обработка в условиях высокой нагрузки на запись.Его мощный язык запросов поможет выявить тенденции, аномалии и другие ценные сведения из данных временных рядов.
22. Memgraph — Graph Database Prodigy
from mgclient import connect
connection = connect(host='127.0.0.1', port=7687)
cursor = connection.cursor()
cursor.execute('CREATE (:User{name:"John Rush"})')
cursor.execute('MATCH (u:User) RETURN u.name')
for row in cursor.fetchall():
print(row)
Memgraph — это высокопроизводительная база данных графов in-memory, созданная для аналитики в реальном времени. Совместимость с языком запросов Cypher делает ее отличным выбором для тех, кто знаком с Neo4j.
23. Riak KV — Key-Value Connoisseur
import riak
client = riak.RiakClient()
bucket = client.bucket("users")
user_key = bucket.new("johnrush", data={"name": "John Rush"})
user_key.store()
fetched_user = bucket.get("johnrush")
print(fetched_user.data)
Riak (KV) — это распределённая NoSQL база данных типа «ключ-значение (key-value)». Riak CS спроектирована так, чтобы обеспечить простоту, доступность, распределённость облачного хранилища любого масштаба, и может использоваться для построения облачных архитектур — как публичных, так и частных — или как инфраструктурного хранилища для высоко нагруженных приложений и сервисов.
24. KeyDB — Redis on Steroids
from keydb import Client as KeyDBClient
keydb_client = KeyDBClient(host="localhost", port=6379)
keydb_client.set("name", "John Rush")
print(keydb_client.get("name"))
KeyDB берет все, что вы любите в Redis, и добавляет новые возможности! KeyDB — это форк Redis, разработанный канадской компанией и распространяемый под свободной лицензией BSD. Проект весьма молод: он существует с начала 2019 года. История его такова, что авторы тоже однажды столкнулись в свое время с ограничениями Redis… и решили сделать свой форк. Причём он не только решил известные проблемы, но и получил дополнительные возможности, которые доступны только в enterpise-версии Redis. Благодаря поддержке многопоточности и улучшенной производительности, эта альтернатива с открытым исходным кодом может стать вашим новым решением для кэширования.
25. MeiliSearch — Full-Text Search Extraordinaire
import meilisearch
client = meilisearch.Client('http://127.0.0.1:7700')
index = client.create_index(uid='users')
index.add_documents([{'id': '1', 'name': 'John Rush'}])
results = index.search('John')
print(results.hits)
MeiliSearch — это быстрый, простой в использовании и простой в развертывании механизм текстового поиска. Эта сверхбыстрая, устойчивая к опечаткам поисковая система может быть интегрирована в любое приложение за считанные минуты.
Заключение
Умение работать с различными базами данных и знание различных СУБД (систем управления базами данных) представляют собой важный аспект для специалистов в области информационных технологий и аналитики данных. Вот несколько причин, почему это важно:
1. Разнообразие требований. Различные проекты и организации могут использовать разные СУБД в зависимости от их потребностей по масштабу, производительности, безопасности и другим факторам. Умение работать с разными СУБД позволяет эффективно адаптироваться к разнообразным требованиям.
2. Гибкость. Знание различных СУБД позволяет специалистам выбирать наиболее подходящее решение для конкретной задачи или проекта, что повышает гибкость и эффективность работы.
3. Кросс-платформенность. В мире разнообразных технологий важно уметь работать с разными платформами и обеспечивать их взаимодействие. Знание различных СУБД дает возможность взаимодействовать с данными на различных платформах.
Таким образом, умение работать с различными базами данных и знание разных СУБД повышают профессиональную компетентность и делают специалиста востребованным на рынке труда.
Вот и все — 25 баз данных, о которых вы возможно не знали и которые помогут вам в работе!