长字符串数据库的最佳方法


12

我需要将问题和答案存储在数据库中。问题将是一到两个句子,但答案会很长,至少一个段落,甚至可能更多。

我现在知道要做的唯一方法是SQL数据库。但是,我觉得这不是一个好的解决方案,因为据我所知,这些数据库并未用于这种类型或大小的数据。这是正确的方法还是有更好的方法来存储此数据?有没有比存储原始字符串更好的方法?



请定义“长” 1k,5M,1GB?
詹姆斯·安德森

您为什么不喜欢“原始”字符串?数据实际上是字符串,还是结构化数据?您打算用它做一些不适用于字符串的事情吗?您的问题中没有任何明确的原因说明为什么数据库不合适。字符串也是如此(如果字符串太大并且取决于您使用的数据库,则可能是CLOBS)。
psr 2012年

我指的是一种聪明的存储方式,也许是通过某种类型的压缩,而不是明文字符串。我本质上担心这里的数据库大小。
gsingh2011 2012年

1
您正在使用哪个RDBMS?Oracle对处理和搜索文本提供了一些出色的支持。
马修·弗林

Answers:


19

Mongodb很棒,但是您知道SQL。在字段中存储长答案没有错。您可以在SQL中存储图像甚至文件。我认为最大字段大小是2gb。

我几乎肯定这个答案本身存储在某个表字段中的某个地方。

至于有成千上万个,没问题。甚至数百万也不应该成为问题。如果要在字段中搜索关键字或其他内容,则可以考虑使用全文索引。但是,在遇到问题之前,我不会尝试进行优化。电脑便宜,存储基本上是免费的。


11
除非您确实遇到问题,否则不要进行+1!
GrandmasterB 2012年

4
在ANSI SQL中未指定最大字段大小,它取决于DBMS(通常取决于其他一些因素,例如字符集,列数据类型,存储引擎,操作系统等)。
tdammers 2012年

6

将长文本存储在数据库中(SQL或其他方式)没有问题。这就是互联网上几乎每个博客条目(例如Wordpress),新闻文章和论坛帖子(例如phpbb)的存储方式。我不知道堆栈交换设置的具体细节,但是我确定您的问题也存储在数据库中。大多数SQL数据库具有TEXT字段类型或等效字段,仅用于存储任意长度的文本数据。许多人还拥有全文搜索系统。

根据技术知识和理解而非感情来做出技术决策。


5

是的,这是正确的方法。您想要执行的操作是在SQL数据库中存储字符串。我在数据库中的一个表具有大量的纯文本数据,并且运行良好。

如果您担心存储空间-请记住它很便宜!

如果您担心性能-不用担心,一个好的数据库可以扩展(或横向扩展)到要放入的数据量。

您要做的最后一件事就是现在就开始对其进行优化(在将字符串放入数据库之前先压缩字符串或其他麻烦的东西),然后才真正成为问题。您只是在给自己做更多的工作。


2

存储大字符串或二进制数据没有问题。我使用的数据库具有超过1 TB的二进制数据,并且工作得很好(postgres),唯一不好的是备份时间。

最大的问题是:“您需要在此文本中进行不断搜索吗?”

如果要在文本中搜索字符串,可以考虑采用一种索引解决方案:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.