在我的当前项目中,我需要为给定对象的每个实例存储一个非常长的ASCII字符串。此字符串将收到每分钟2个附加项,并且不会被如此频繁地检索。
最坏的情况是一个5-10 is的字符串。我将有数以千计的对象实例,我担心将所有这些字符串存储在文件系统中并不是最优的,但我想不出更好的解决方案。
有人能提出一个替代方案吗?也许是一家重要的商店?在这种情况下,哪一种?还有其他想法吗?
发布于 2012-12-08 02:54:59
在10 to字符串中添加几个字符听起来是一个糟糕的设计选择。备份并考虑您实际要做的事情,而不需要假设/结论所讨论的对象是一个字符串。也许对象的某些视图(很少使用)需要是字符串,但这是另一回事。
发布于 2012-12-08 03:11:34
以下是我如何解决这个问题的方法:
我会将数据存储为2GB文件中的一系列块。每个块都需要字符串ID、该字符串的块序列、前一个块的文件ID和文件偏移量以及大约2k的数据空间,以便将字符串字符写入其中。当该块的数据空间被填充时,您将分配下一个未使用的块来继续数据流并回发到前一个块。
对于每个对象字符串,您需要将块序列、文件句柄、文件偏移量和可以添加到该块的剩余字节保存在内存中。
当需要重新创建要读取的字符串时,根据块序列号知道字符串有多大,然后必须从每个块读取数据。
基于1000's的对象,每个对象写2次,需要考虑磁盘基础结构。
发布于 2012-12-08 09:28:38
将它们作为单独的项/行插入。在阅读的时候把它们放在一起。
这可以在关系数据库或简单文件中完成。
https://softwareengineering.stackexchange.com/questions/178707
复制相似问题