Skip to main content

1. NoSQL 简介

什么是 NoSQL?

NoSQL(Not Only SQL) 是一种数据库管理系统类别,通常用于处理大规模的非结构化或半结构化数据。与关系型数据库(SQL)不同,NoSQL 数据库具有更高的可扩展性、灵活性,并且通常更适合现代 Web 和大数据应用。

info

NoSQL 数据库通常用于处理高并发、分布式存储和大规模数据的应用场景,如社交媒体、日志存储和实时数据分析。

NoSQL 数据库的主要类型

类型描述示例
文档数据库存储 JSON 或 BSON 文档MongoDB
键值存储通过键值对存储数据,快速查找Redis, DynamoDB
列族存储适用于高吞吐量、大规模数据分析Cassandra, HBase
图数据库处理复杂的关系网络,如社交图谱Neo4j

NoSQL 代码示例

1. MongoDB(文档数据库)

MongoDB 使用 JSON 格式存储数据,适用于动态变化的数据模型。

const { MongoClient } = require("mongodb");
async function run() {
const client = new MongoClient("mongodb://localhost:27017");
await client.connect();
const db = client.db("testdb");
const collection = db.collection("users");
await collection.insertOne({ name: "Alice", age: 25 });
const user = await collection.findOne({ name: "Alice" });
console.log(user);
await client.close();
}
run();

2. Redis(键值存储)

Redis 适用于缓存、消息队列和会话管理。

const redis = require("redis");
const client = redis.createClient();
client.set("name", "Alice", redis.print);
client.get("name", (err, reply) => {
console.log(reply);
client.quit();
});

3. Cassandra(列族存储)

Apache Cassandra 适用于大规模分布式存储。

CREATE KEYSPACE testdb WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
USE testdb;
CREATE TABLE users (
id UUID PRIMARY KEY,
name text,
age int
);
INSERT INTO users (id, name, age) VALUES (uuid(), 'Alice', 25);
SELECT * FROM users;

4. Neo4j(图数据库)

Neo4j 适用于社交网络、推荐系统等关系型数据。

CREATE (a:User {name: 'Alice', age: 25});
MATCH (u:User) WHERE u.name = 'Alice' RETURN u;

何时使用 NoSQL?

tip

选择 NoSQL 数据库时,请考虑以下因素:

  • 数据结构:数据是否具有固定的结构?
  • 可扩展性:是否需要分布式存储?
  • 查询模式:是否有复杂的查询需求?

结论

NoSQL 数据库为现代应用提供了灵活、高效的存储方式。不同类型的 NoSQL 适用于不同的应用场景,如 MongoDB 适用于文档存储,Redis 适用于缓存,Cassandra 适用于大规模数据分析,Neo4j 适用于关系数据。

更多 NoSQL 资源