Кассандра против MongoDB: изучение сходства

Что касается баз данных NoSQL, среди разработчиков наиболее популярны Cassandra и MongoDB. Хотя они имеют свои уникальные особенности и варианты использования, между ними есть и некоторые сходства. В этой статье мы углубимся в эти сходства и рассмотрим различные методы на примерах кода, демонстрирующих их общие характеристики.

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

Пример (MongoDB – JavaScript):

// Inserting a document
db.collection('users').insertOne({
  name: 'John Doe',
  age: 30,
  email: 'john@example.com'
});
// Adding a new field to an existing document
db.collection('users').updateOne(
  { name: 'John Doe' },
  { $set: { address: '123 Main St' } }
);

Пример (Кассандра – CQL):

-- Creating a table
CREATE TABLE users (
  id UUID PRIMARY KEY,
  name TEXT,
  age INT,
  email TEXT
);
-- Inserting a row
INSERT INTO users (id, name, age, email)
VALUES (uuid(), 'John Doe', 30, 'john@example.com');
-- Adding a new column to the table
ALTER TABLE users ADD address TEXT;
  1. Масштабируемость.
    Обе базы данных предназначены для обработки крупномасштабных данных и обеспечивают горизонтальную масштабируемость. Они распределяют данные по нескольким узлам, обеспечивая высокую доступность и отказоустойчивость.

Пример (MongoDB – JavaScript):

// Creating a sharded cluster
sh.addShard("mongodb1.example.com:27017");
sh.addShard("mongodb2.example.com:27017");
sh.addShard("mongodb3.example.com:27017");

Пример (Кассандра – CQL):

-- Creating a keyspace with replication factor
CREATE KEYSPACE my_keyspace
WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': 3};
-- Creating a table with multiple nodes
CREATE TABLE my_keyspace.my_table (
  id UUID PRIMARY KEY,
  name TEXT,
  age INT,
  email TEXT
) WITH replication = {'class': 'NetworkTopologyStrategy', 'datacenter1': 3};
  1. Высокая производительность.
    Обе базы данных обладают высокопроизводительными возможностями, обеспечивающими быстрые операции чтения и записи. Они достигают этого с помощью различных механизмов, таких как кэширование памяти, сжатие данных и оптимизированное выполнение запросов.

Пример (MongoDB – JavaScript):

// Indexing a field for faster queries
db.collection('users').createIndex({ name: 1 });
// Performing a query
db.collection('users').find({ name: 'John Doe' });

Пример (Кассандра – CQL):

-- Creating an index
CREATE INDEX ON users (name);
-- Performing a query
SELECT * FROM users WHERE name = 'John Doe';