存储大量Unicode文本的最佳方式是什么?



我正在开发一个项目,我需要存储大约15k Unicode字符。最好的存储方式是什么?

主要应用程序是在c#中,其他一些数据存储在SQL Server数据库中。这些大量的文本需要通过随机生成的条目键和类别键来识别。显然,可能/应该有多个条目具有相同的类别键。

这些条目将被添加、检索,并使用关键字按类别键进行搜索。

我目前正在考虑以下两种方法:(其他想法更受欢迎)


文件

每个类别键表示为一个文件夹,每个条目表示为一个文件,使用条目键作为文件名。

搜索我将只使用Apache Lucene。. Net项目建立一个索引,并根据它进行搜索。


SQL Server

只是作为另一个NVARCHAR(MAX)类型的列存储在一个表中。


哪一种方法是最好的?我正在寻找其他的选择,和利弊关于这些

要回答你的问题,你必须回答这个问题:

  1. 是否存储超过2gb的数据?nvarchar(max)的最大数据量为2gb。
  2. 你会在sql server中操作这些数据吗(全文搜索,分组等)?
  3. 您需要事务性操作吗?
  4. 可以添加文件,也可以添加失败的记录到DB和副版本。

所以,假设你对这个问题有答案,你可以决定。我的建议-存储大数据在文件或其他blob存储(azure blob,亚马逊等),并有一个表与这些文件的列表。

优点:

  1. 小数据库大小-易于备份,易于恢复
  2. 快速查询文件列表表(计数,加入,分组等)

缺点:

  1. 你需要保持数据库和文件存储同步
  2. 你有非事务性操作,但它可以被操作顺序忽略:保存(或删除)文件,然后在DB中进行更改。因此,如果在DB上失败,只需从第一步开始操作。

将所有数据存储在一个数据存储中要容易得多。我会选择SQL server解决方案。

但是,如果您主要关心存储空间,并且文本主要是ASCII,那么编码为UTF-8将节省约50%。SQL server不支持UTF-8,只支持UTF-16 (UCS-2)。因此,单独保存一个文件可能会有好处。