首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoSQL数据库性能

NoSQL数据库性能
EN

Database Administration用户
提问于 2016-12-12 18:39:47
回答 1查看 78关注 0票数 1

我一直在为NoSQL技术设计和开发一个C#.Net数据库引擎(使用C#.Net)。与可用的NoSQL数据库类似,我以JSON格式存储所有文档,并将所有相关文档记录(即Album1、Album2、Album3)保存在一个文件中。

我一直在测试该解决方案,以查看它在实际场景中的实际性能,并且使用Visual测试框架,我的解决方案在大约12秒内成功地查询和搜索了2,000,000个文档。

我的第一个问题是,如果这是一个好的结果,它的表现有多好?

其次,由于所有记录最终都保存在文件中,所以我实现了一种单例设计模式,它缓冲内存中的所有物理文档,以避免并发文件处理的需要。假设有10个文档类别(专辑、流派、艺术家、.)这将消耗超过8GB的RAM,这是不好的。另一方面,如果我禁用缓冲,并使所有查询依赖于搜索物理文件,假设我获得100个并发请求,每个请求需要12秒才能完成,那么这100个请求可能需要1200秒才能完成--我认为这是很糟糕的。

第二个问题是,如何优化这个问题?我的意思是,与SQL数据库不同的是,NoSQL数据库的目的是保存大量数据,而这样的海量数据不能在内存中完全缓冲,也不能在磁盘上反复搜索。从理论上讲,应该如何实现这一点?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2016-12-13 10:48:52

每秒100,000 ish记录听起来不像一个标题数字那么糟糕。然而,如果没有背景,它就毫无意义。存储阵列上的规格是什么?你是否接近了制造商的IOPS和带宽号码?它与磁盘性能测试工具的报告值相比如何?当分析重载下的应用程序时,所花费的时间在哪里?系统IO或CPU绑定吗?

一些高端服务器确实有大量的内存。64 is是我见过的最大的。但你是对的,把所有东西都保存在记忆里在一般情况下是行不通的。有一套工作的概念。这些是当前用户正在读取和写入的行。系统将它们保存在内存中,并不时地将它们同步到磁盘上。当用户继续进行新的工作时,系统通过从RAM中清除最近使用最少的数据来腾出空间。

要找到特定的记录,您需要索引。这些交易额外的磁盘和预处理时间,以减少查找时间。有许多不同的索引算法,每一个都有优缺点。

对于大型OLAP工作,您可能只需读取磁盘上的所有数据才能执行查询。可以通过预处理获得摘要值(多维数据集和类似值)。

这是一项巨大的事业。整个职业生涯都在努力做到这一点。你有一个工作的产品是令人印象深刻的。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/157937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档