一个初学者的问题。
我正在使用 Rdplyr
来分析大量数据,但我无权访问基于服务器的数据库。此外,我的计算机的内部硬盘驱动器对于我需要创建的数据库来说太小了。到目前为止,我一直在使用monetdblite
和RSQLite
存储数据。
问:如果我将数据库保存在外部硬盘驱动器上并通过 USB 连接到计算机,速度monetdblite
/会降低多少?RSQLite
哪些因素决定了它的可行性?
或者在我的情况下是否有更好的替代方法(仍然依赖dplyr
的数据库连接)?
一个初学者的问题。
我正在使用 Rdplyr
来分析大量数据,但我无权访问基于服务器的数据库。此外,我的计算机的内部硬盘驱动器对于我需要创建的数据库来说太小了。到目前为止,我一直在使用monetdblite
和RSQLite
存储数据。
问:如果我将数据库保存在外部硬盘驱动器上并通过 USB 连接到计算机,速度monetdblite
/会降低多少?RSQLite
哪些因素决定了它的可行性?
或者在我的情况下是否有更好的替代方法(仍然依赖dplyr
的数据库连接)?
很难判断外部驱动器是否较慢。例如,如果内部驱动器是 SSD 而外部驱动器是经典的“旋转磁盘”,则性能下降或多或少是可以预料的,尤其是在使用复杂查询时。我建议您简单地尝试使用大小合理的数据库并在两个磁盘上进行查询。您还可以使用各种磁盘性能检查工具(例如 OSX 上的 XBench)来检查性能。这里要寻找的有趣指标是顺序扫描速度和随机访问速度。
我使用 monetDBLite 将大型数据集加载到 Rstudio 中。出于安全原因,我有一个带 USB 3.0 的外置 SSD,但我的内置硬盘也是 SSD。我已经使用了几个月,我的经验总结在以下查询中:
SELECT * FROM drug_db WHERE atc='L02BX03' OR atc='L02BB04';
内置:< 2 秒,
在外部:6-7 分钟
该查询扫描约 15 Gb 的数据库并返回约 30 000 行 14 个变量。根据我的经验,与针对外部 SSD 运行查询相比,将文件复制到内置驱动器并在那里运行查询实际上要快得多。