📅  最后修改于: 2023-12-03 15:20:18.311000             🧑  作者: Mango
SQLite 是一款轻量级的关系型数据库管理系统 (RDBMS),它使用 C 语言编写,被广泛应用于嵌入式设备和移动应用中。
MongoDB 是一款基于分布式文件存储的 NoSQL 数据库管理系统,采用 C++ 语言编写,被广泛应用于大规模的 Web 应用和实时数据处理场景。
SQLite 是一款关系型数据库,它采用表的方式存储数据,并且支持 SQL 查询语言。SQLite 中的表具有固定的列和行,每个表都需要事先定义好其中的字段。
MongoDB 则是一款文档型数据库,它采用 JSON 格式存储数据,不需要像关系型数据库一样定义表结构。在 MongoDB 中,同一集合中的文档可以有不同的字段。
-- SQLite 创建表示例
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
// MongoDB 插入文档示例
db.myCollection.insertOne({ name: "John", age: 30 });
db.myCollection.insertOne({ name: "Mary", email: "mary@example.com" });
由于 SQLite 是一款单机数据库,数据存储在文件中,因此它的扩展性非常有限。当数据量超过单机存储限制时,需要将其迁移到更强大的数据库管理系统中。
MongoDB 利用集群功能实现了分布式存储和加强的扩展性。在 MongoDB 中,多个节点可以协同工作,支持水平扩展。
-- SQLite 不支持分布式扩展
-- MongoDB 分片集群示例
sh.enableSharding("myDatabase");
sh.shardCollection("myDatabase.myCollection", { _id: "hashed" });
SQLite 支持标准的 SQL 查询语言,包括 SELECT、UPDATE、DELETE、INSERT 等等。
MongoDB 的查询语言,则采用了一种名为 BSON(Binary JSON)的格式,它支持丰富复杂的查询功能,包括排序、过滤、嵌套查询等等。
-- SQLite SELECT 查询示例
SELECT * FROM users WHERE age > 18;
// MongoDB 查询示例
db.myCollection.find({ age: { $gt: 18 } });
SQLite 支持多种索引类型,包括 B 树、哈希、R 树等等。在 SQLite 中创建索引后,查询会更快,但是会增加写入数据的时间。
MongoDB 中的索引则分为单键索引和复合索引。MongoDB 中的索引可以减少查询的时间,但是会增加存储空间的消耗。
-- SQLite 索引创建示例
CREATE INDEX user_age_index ON users (age);
// MongoDB 索引创建示例
db.myCollection.createIndex({ age: 1, name: -1 });
SQLite 和 MongoDB 都是非常优秀的数据库管理系统,它们各有优缺点。SQLite 更适用于小型应用,需要使用 SQL 查询的场景;MongoDB 则适用于大型应用,需要高扩展性和高查询性能的场景。开发者应该根据具体情况选择合适的数据库管理系统。