除数据表之外的最佳结构,可在前端存储~五十万条记录
本文关键字:存储 前端 五十万 记录 数据表 结构 最佳 | 更新日期: 2023-09-27 18:32:57
我有一个数据表,它正在从数据库(SQLite(获取~5,50,000条记录。获取时,它会减慢系统速度。
我将这些记录存储在SQLite数据库的后端和Datatable的前端。现在我应该怎么做才能减少后端的数据库创建时间(~10.5 小时(和前端的获取时间。
有没有其他结构可以用来这样做。我读过字典和二进制文件很快。它们可以用于此目的以及如何使用吗?
(它不是一个 Web 应用程序,它是一个 WPF 桌面应用程序,其中前端和后端位于同一台计算机上(。
我相信,你的基本问题不是你想要维护的结构,而是你管理数据流的方式。与其将所有数据从数据库获取到某个结构中(在您的情况下DataTable
(,不如进行一些stored procedure
,以便在服务器端进行所需的计算,并将已经计算的数据返回给您。通过这种方式,您可以获得一些好处,例如:
- 保存数据库服务器的服务器通常比开发或客户端计算机更快
- 大大减少了数据传输,因为您只返回计算结果
编辑
考虑到编辑后的帖子,我会说DataTable
在内存访问方面已经高度优化,我不认为将其更改为其他内容会给您带来显着的好处。我认为可以带来banefit的是程序流程的修订。换句话说,尝试回答以下问题:
- 我需要所有当代的记录吗?
- 我可以在
service
运行一些计算吗,比如说,在晚上? - 我可以使用
SQL Server Express
(只是示例(并获得运行stored procedure
的可能性的好处,即使在同一台机器上,也可以(必须测量(更快地运行这些东西?
您是否考虑过在数据位置进行计算,而不是获取数据?您能否向我们提供更多信息,例如它存储在什么中,您如何获取它以及如何处理它。
如果没有指标和背景信息,就很难确定优化。
这很容易说 - 是的,将数据放在文件中。但是文件是本地的,网络是问题吗,您是否充分利用了内核/线程等。
最好从数据重新开始,看看需要对它做什么,然后设计出最佳优化。
编辑:
好的,所以你们在同一台机器上?在这种情况下,您真正应该考虑的一件事是您对数据执行的操作。它必须是 SQL 吗?如果您只是使用 is 加载数据表?还是您没有披露的复杂性?
我有一个类似的任务 - 我刚刚创建了一个大型文本文件并使用内存映射有效地读取,没有任何开销。这是你说的那种事情吗?
您可以尝试使用像RaptorDB这样的持久字典来存储和获取/操作ArrayList中的数据。概念验证应该不需要很长时间来构建。