Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 从数据库加载大文本文件块_Database_Mongodb_Postgresql_Database Design_Large Files - Fatal编程技术网

Database 从数据库加载大文本文件块

Database 从数据库加载大文本文件块,database,mongodb,postgresql,database-design,large-files,Database,Mongodb,Postgresql,Database Design,Large Files,因此,正如主题所说的,我需要为DB中加载的多个大型文本文件提供块服务。这些文件可以是从100行到10.000.000行的任意位置。我将以10/50/100行为单位将它提供给处理脚本的多个实例。问题是-存储和服务它们的正确方式是什么?假设可能有数百个这样的文件 什么数据库和可能的附加工具是最佳选择?MongoDB+GridFS?或者有一种有效的方法可以将它们分成小块,以防我将它们存储为PostgreSQL中的BLOB?如果使用关系数据库,我会将文件逐行存储在表中。这样很容易获取行: SELECT

因此,正如主题所说的,我需要为DB中加载的多个大型文本文件提供块服务。这些文件可以是从
100
行到
10.000.000
行的任意位置。我将以10/50/100行为单位将它提供给处理脚本的多个实例。问题是-存储和服务它们的正确方式是什么?假设可能有数百个这样的文件


什么数据库和可能的附加工具是最佳选择?
MongoDB+GridFS
?或者有一种有效的方法可以将它们分成小块,以防我将它们存储为
PostgreSQL
中的
BLOB

如果使用关系数据库,我会将文件逐行存储在表中。这样很容易获取行:

SELECT line FROM documents
WHERE docname = 'mydoc'
  AND line_nr > 100
ORDER BY line_nr
FETCH FIRST 50 ROWS ONLY;
(docname,line\u nr)
上的b树索引将使查询非常高效


如果要防止表变得太大,请在
docname

上使用范围分区,在这种情况下,包含所有文档的单个表可能有数十亿条记录。我猜从几十个客户端同时导航它们会使数据库过载很多?另外:如果使用
b-tree
index确实解决了导航问题,那么不使用它的请求呢?例如
DELETE*其中docname='mydoc'
。我不需要经常这样做,也不需要从多个实例中这样做,但是它会在一个有几十亿条记录的表上在合理的时间内执行吗?是的,
DELETE
会很有效。您可以优化大小或速度,我认为您对速度感兴趣。如果您想减少表的大小,请使用带
docname
的范围分区。好的,谢谢您的建议!因此,在速度优化的情况下,最有效的方法是将其保存在一个具有数十亿条记录的表中?在我看来,是的。