Sql 数据库或其他存储和动态访问大型二进制对象的方法

Sql 数据库或其他存储和动态访问大型二进制对象的方法,sql,database,rdbms,large-files,object-oriented-database,Sql,Database,Rdbms,Large Files,Object Oriented Database,我有一些大的(200 GB是正常的)数据平面文件,我想存储在某种数据库中,以便能够以直观的方式快速地访问数据,从而对数据进行逻辑组织。可以将其视为一大组非常长的录音,其中每个录音的长度(样本)相同,可以将其视为一行。其中一个文件通常有大约100000条录音,每条录音长度为2000000个样本 将这些记录作为BLOB数据行存储在关系数据库中是很容易的,但在许多情况下,我只想将整个数据集的某些列加载到内存中(例如,样本1000-2000)。最节省内存和时间的方法是什么 请不要犹豫地询问,你是否需要对

我有一些大的(200 GB是正常的)数据平面文件,我想存储在某种数据库中,以便能够以直观的方式快速地访问数据,从而对数据进行逻辑组织。可以将其视为一大组非常长的录音,其中每个录音的长度(样本)相同,可以将其视为一行。其中一个文件通常有大约100000条录音,每条录音长度为2000000个样本

将这些记录作为BLOB数据行存储在关系数据库中是很容易的,但在许多情况下,我只想将整个数据集的某些列加载到内存中(例如,样本1000-2000)。最节省内存和时间的方法是什么

请不要犹豫地询问,你是否需要对我的数据的细节作出更多的澄清,以便提出建议

编辑:要澄清数据维度。。。一个文件包含:100000行(记录)乘以2000000列(示例)。我研究过的大多数关系数据库都允许表中最多有几百到几千行。再说一次,我对面向对象数据库了解不多,所以我想知道这样的东西是否有帮助。当然,任何好的解决方案都是非常受欢迎的。谢谢


编辑:要澄清数据的使用。。。数据将仅由自定义桌面/分布式服务器应用程序访问,我将编写该应用程序。每个数据“集合”(到目前为止,我称之为200GB文件)都有元数据(收集日期、过滤器、采样率、所有者等)。还有与每个记录相关联的元数据(我希望是表中的一行,这样我就可以为每个记录元数据添加列)。所有元数据都是一致的。也就是说,如果某个特定的元数据片段存在于一个记录中,则该元数据片段也存在于该文件中的所有记录中。样本本身没有元数据。每个样本是8位普通二进制数据。

每个样本有多大,每个记录有多大? 你是说每一份录音是200万份样本,还是每一份文件都是?(它可以以任何方式读取)

如果200 GB是200万个样本,那么每个样本约为10 K,每个记录为200 K(每个文件有100000个样本,即每个记录20个样本)

这似乎是一个非常合理的大小,可以放在DB中的一行中,而不是磁盘上的一个文件中


至于只将某个范围加载到内存中,如果您已经为样本ID编制了索引,那么您可以非常快速地只查询您想要的子集,从DB查询结果中只将该范围加载到内存中。

DB存储可能不适合大文件。是的,可以做到。是的,它可以工作。但是数据库备份呢?文件内容可能不会经常更改-一旦添加,它们将保持不变


我的建议是将文件存储在磁盘上,但创建一个基于DB的索引。当文件夹/目录等中的文件超过10k时,大多数文件系统都会变得异常或缓慢。应用程序可以生成文件名并将元数据存储在数据库中,然后根据生成的名称在磁盘上进行组织。缺点是文件内容可能无法直接从名称中看出。但是,您可以轻松地备份更改的文件,而无需专门的DB备份插件和复杂的分区增量备份方案。此外,文件中的查找操作变得简单得多(向前跳过、倒带等)。在文件系统中对这些操作的支持通常比在数据库中更好。

我想知道是什么让您认为RDBMS将仅限于数千行;没有理由这样

此外,如果您只知道要使用的偏移量和长度,则至少有些数据库(例如Oracle)允许直接访问部分LOB数据,而无需加载整个LOB。因此,您可以有一个带有一些可搜索元数据的表,然后是LOB列,如果需要,还可以有一个包含LOB内容元数据的附加元数据表,这样您就可以有某种关键字->(偏移量,长度)关系,用于LOB的部分加载


在某种程度上与这里的另一篇文章相呼应,增量备份(您可能希望在这里使用)在数据库中不太可行(好的,是可能的,但至少在我的经验中,它往往附带了一个令人讨厌的价格标签)。

我认为Microsoft SQL可以满足您对varbinary(MAX)的需求与filestream存储结合使用时的字段类型

深入阅读以下内容:(http://technet.microsoft.com/en-us/library/bb933993.aspx)

基本上,您可以正常地在数据库中输入任何描述性字段,但实际的BLOB存储在NTFS中,由SQL引擎管理,并且仅受NTFS文件系统的大小限制


希望这能有所帮助——我知道这会在我的脑海中引发各种各样的可能性

不确定这是评论还是回答,但相关的问题和答案可能会提供一些启示。如何访问数据?您是否正在编写桌面应用程序、网站或计划使用Excel?关于文件和样本存在哪些元数据?模式是否一致?即每个文件和示例是否具有相似的字段?@MarkBannister-这些问题的答案对于在数据库中存储BLOB数据的一般情况有所帮助,但是,我希望访问数据列可能会使我的情况有所不同。也许不是。对不起,我可能写得太多了。第一段的最后一句应该是:“一个文件有100000个记录,每个记录有2000000个样本。”啊,该死。。。我指的是成千上万的专栏。我来编辑编辑。