我需要一种在磁盘上只存储一个大文本而不将其完全加载到内存中的方法。
我的查询是文本跨度的形式,例如:给我位置 x 和位置 x + n 之间的所有文本,不多也不少。我没有经常更改文本。
可能我需要像“持久” B-Tree 这样的东西。
它还需要一些 DBMS 功能,例如:
- 客户端/服务器架构
- 缓存系统
谢谢
我需要一种在磁盘上只存储一个大文本而不将其完全加载到内存中的方法。
我的查询是文本跨度的形式,例如:给我位置 x 和位置 x + n 之间的所有文本,不多也不少。我没有经常更改文本。
可能我需要像“持久” B-Tree 这样的东西。
它还需要一些 DBMS 功能,例如:
谢谢
它还需要一些 DBMS 功能,例如:...
那么,为什么不使用 DBMS 呢?甚至是具有查询功能的 NoSQL 解决方案,例如 OrientDB?
我认为你可以做这样的事情。
现在您可以编写查询来提取位置 x 和位置 x+n 之间的文本。
SELECT TEXT, BEGIN END
FROM TEXT_TABLE
WHERE END >= x
AND BEGIN <= (x+n)
ORDER BY BEGIN
最后,您只需提取文本,执行以下操作:
- 从第一行:substring(TEXT, (x-BEGIN))
- 从“内部”行:所有 TEXT
- 从最后一行:substring(TEXT, 0, (x+ n-开始))
显然,您还应该注意“边缘情况”(结果只有一两行,请求的跨度超出范围,......)。
但我认为这种方法应该不用太多努力就可以解决你的问题。
希望能帮助到你。
再见,
拉夫