📜  什么是非关系型数据库 - SQL (1)

📅  最后修改于: 2023-12-03 15:21:50.775000             🧑  作者: Mango

什么是非关系型数据库 - SQL

非关系型数据库(NoSQL)是指一类不使用 SQL 作为查询语言,也不遵循关系型数据库模型(表,行和列)的数据库系统。

与关系型数据库不同,非关系型数据库可以处理不同类型的数据,包括结构化、半结构化和非结构化数据。它们也可以处理数据量更大、更复杂的应用程序。

类型

非关系型数据库按照其数据存储和处理方式可以分为以下几种类型:

  • 键值数据库(Key-Value Database)
  • 文档数据库(Document Database)
  • 列族数据库(Column Family Database)
  • 图数据库(Graph Database)
SQL vs NoSQL

SQL(Structured Query Language)是关系型数据库系统使用的查询语言。与之不同,NoSQL系统使用不同的查询语言,例如 Cassandra 使用 CQL(Cassandra Query Language),MongoDB 使用 BSON(Binary JSON)。

关系型数据库系统需要预定义表结构,开发人员必须在创建表之前定义结构,而非关系型数据库系统不需要预定义表结构,可以在插入数据时动态地定义。

NoSQL 数据库系统通常更适合大规模、高性能、高可用性和低延迟的应用程序场景,而关系型数据库则更适合需要事务支持和数据完整性的应用程序场景。

代码示例
MongoDB 查询
// 连接数据库
const MongoClient = require('mongodb').MongoClient;
const uri = "mongodb+srv://username:password@cluster0.mongodb.net/test?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true });
client.connect(err => {
  const collection = client.db("test").collection("devices");
  // 查询数据
  collection.find({}).toArray(function(err, result) {
    if (err) throw err;
    console.log(result);
    client.close();
  });
});
Cassandra 查询
// 连接数据库
const cassandra = require('cassandra-driver');
const client = new cassandra.Client({
  contactPoints: ['host1', 'host2'],
  localDataCenter: 'datacenter1',
  keyspace: 'mykeyspace'
});
// 查询数据
const query = 'SELECT name, email FROM users WHERE id = ?';
client.execute(query, [id], { prepare: true })
  .then(result => console.log('User info', result.rows[0]))
  .catch(error => console.error(error));