没有横向扩展,NoSQL 的性能是否比 MySQL 更好?
Without scale-out, does NoSQL have better performance than MySQL?
我只有一台机器用于设置数据库。该数据库的主要用途是 write/write 审计日志。 write/read 比率约为 9:1。本来打算用MySQL。后来我听说 NoSQL DB 在 "scale out" 时有更好的性能。我感兴趣的是,如果我只有一台机器,NoSQL DB(例如,cassandra 或 mongo DB)的性能是否会比 MySQL 更好?
是的,确实如此。
我正在使用 MongoDB。我在 MySQL 和 MongoDB 上都尝试了我的应用程序。我在 MongoDB 上看到了更好的性能。
因此,总的来说,我注意到性能更好。
但我认为这取决于某些因素,例如您是否使用连接、外键等。您必须知道在 NoSQL 中通常没有连接等。
PS: 说了这么多。这取决于您的工作方式和内容。
此外,如果您使用 MongoDB 作为 NoSQL 数据库,请检查较新版本 (3.0),因为他们说它比旧版本 (2.6) 快 10 倍。
如果你真的需要一个高性能的数据库,你可以选择 Redis。
这是一个 "NoSQL" 键值数据存储。更准确地说,它是一个数据结构服务器。不像 MongoDB(这是一个基于磁盘的文档存储),尽管 MongoDB 可用于类似的 key/value 用例。最接近的模拟可能是将 Redis 视为 Memcached,但具有内置持久性(快照或日志记录到磁盘)和更多数据类型。
您需要阅读一些相关内容才能决定什么对您重要。
它真的取决于您的使用场景。一般来说,NoSQL 解决方案倾向于提供更简单的语义,至少在理论上,可以避免一些符合 ACID 的 SQL 解决方案的开销。在实践中,虽然现实世界的性能会受到太多因素的影响,但该理论很少发挥作用。
在一个盒子上,您最好花时间优化您的代码以适用于您选择的任何平台。
有 "textbook" 种处理日志数据的解决方案 - ElasticSearch/Kibana/LogStash 是一种常见的解决方案,Redis 是另一种 - 通常专注于更大规模的系统,不适合您的单机需求.
根据您愿意投资多少,在使用 ESENT 或 BerkeleyDB 等非常精简的存储机制时,您可能能够从盒子中挤出最大的 IOPS。不过警告的话:使用这些确实更痛苦。
总而言之,我要重复一遍:在单个盒子上,您最好花时间优化代码以适用于您选择的任何平台。
具有持久性的内存中 NoSQL 数据库之一是您方案的最佳选择。它们的写入操作速度非常快,因为在引擎盖下的写入操作只是写入预写日志文件的末尾,即使在磁盘上也可以以高达 100mb/秒的速度完成。
试试 Redis 或 Tarantool。如果您的并发写入负载很重,则后者更好。
我只有一台机器用于设置数据库。该数据库的主要用途是 write/write 审计日志。 write/read 比率约为 9:1。本来打算用MySQL。后来我听说 NoSQL DB 在 "scale out" 时有更好的性能。我感兴趣的是,如果我只有一台机器,NoSQL DB(例如,cassandra 或 mongo DB)的性能是否会比 MySQL 更好?
是的,确实如此。 我正在使用 MongoDB。我在 MySQL 和 MongoDB 上都尝试了我的应用程序。我在 MongoDB 上看到了更好的性能。 因此,总的来说,我注意到性能更好。 但我认为这取决于某些因素,例如您是否使用连接、外键等。您必须知道在 NoSQL 中通常没有连接等。
PS: 说了这么多。这取决于您的工作方式和内容。
此外,如果您使用 MongoDB 作为 NoSQL 数据库,请检查较新版本 (3.0),因为他们说它比旧版本 (2.6) 快 10 倍。
如果你真的需要一个高性能的数据库,你可以选择 Redis。 这是一个 "NoSQL" 键值数据存储。更准确地说,它是一个数据结构服务器。不像 MongoDB(这是一个基于磁盘的文档存储),尽管 MongoDB 可用于类似的 key/value 用例。最接近的模拟可能是将 Redis 视为 Memcached,但具有内置持久性(快照或日志记录到磁盘)和更多数据类型。
您需要阅读一些相关内容才能决定什么对您重要。
它真的取决于您的使用场景。一般来说,NoSQL 解决方案倾向于提供更简单的语义,至少在理论上,可以避免一些符合 ACID 的 SQL 解决方案的开销。在实践中,虽然现实世界的性能会受到太多因素的影响,但该理论很少发挥作用。
在一个盒子上,您最好花时间优化您的代码以适用于您选择的任何平台。
有 "textbook" 种处理日志数据的解决方案 - ElasticSearch/Kibana/LogStash 是一种常见的解决方案,Redis 是另一种 - 通常专注于更大规模的系统,不适合您的单机需求.
根据您愿意投资多少,在使用 ESENT 或 BerkeleyDB 等非常精简的存储机制时,您可能能够从盒子中挤出最大的 IOPS。不过警告的话:使用这些确实更痛苦。
总而言之,我要重复一遍:在单个盒子上,您最好花时间优化代码以适用于您选择的任何平台。
具有持久性的内存中 NoSQL 数据库之一是您方案的最佳选择。它们的写入操作速度非常快,因为在引擎盖下的写入操作只是写入预写日志文件的末尾,即使在磁盘上也可以以高达 100mb/秒的速度完成。
试试 Redis 或 Tarantool。如果您的并发写入负载很重,则后者更好。