Краткий обзор 25 баз данных, которые актуальны в 2023 году.
Сейчас я познакомлю вас с 25 актуальными базами данных, некоторые из которых, возможно помогут вам в работе.
От классических фаворитов до передовых новичков,
приготовьтесь к дикой поездке по стране баз данных!
@sqlhub – наш телеграм канал с гайдам по базам данных
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, что делает ее лучшим выбором для разработчиков, ищущих решение без схем.
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 может стать вашим новым лучшим другом.
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 – они обе утоляют жажду, просто зависит от того, какой вкус вы предпочитаете!
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 <<EOF
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
INSERT INTO users(name) VALUES ("John Rush");
SELECT * FROM_users;
EOF
Dolt позволяет вам отклониться от нормы, объединяя базы данных в стиле MySQL с функциями контроля версий, подобными Git! Экспериментируйте без страха; объединяйте изменения по мере готовности в этой инновационной гибридной системе баз данных.
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? Так вот, Planetscale делает именно это! Она использует технологию VTest, разработанную YouTube, и предлагает полностью управляемую бессерверную платформу для масштабирования MySQL без лишних усилий.
14. Google Cloud Spanner – The Global Database
const {Spanner} = require("@google-cloud/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 обеспечивает постоянную доступность ваших данных, предоставляя при этом надежные гарантии согласованности.
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 – это бессерверная облачная база данных, предназначенная для современных приложений. Она предлагает GraphQL и пользовательские функции, а также глобальную согласованность и встроенные функции безопасности.
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 предназначена для мониторинга метрик и событий в вашей инфраструктуре. Его мощный язык запросов поможет выявить тенденции, аномалии и другие ценные сведения из данных временных рядов.
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 – это высокодоступное и распределенное хранилище ключевых значений, способное выдерживать большие нагрузки без труда. Оно идеально подходит для таких случаев использования, как игры, рекламные технологии или мобильные приложения.
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, и разгоняет его до одиннадцати! Благодаря поддержке многопоточности и улучшенной производительности, эта альтернатива с открытым исходным кодом может стать вашим новым решением для кэширования.
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 – это мощь полнотекстового поиска на кончиках ваших пальцев с минимальной настройкой! Эта сверхбыстрая, устойчивая к опечаткам поисковая система может быть интегрирована в любое приложение за считанные минуты.
Вот и все – 25 баз данных, которые заставят вас переосмыслить все, что вы знали о хранении данных!