我正在开发一个web应用程序,它允许学生/研究人员通过(手动)计数有趣的现象来对PDF文档进行浅批注。现在,总共有45个这样的现象,其中大部分是名义值,布尔数或整数。数据库是一个MySQL数据库,文档数量在100到500个之间,所以数据库非常小。
应用程序将这些文档及其相应的注释添加到一个也可以搜索的语料库中(并根据这些现象的一个大子集进行过滤)。
将来,可能会增加一些现象,或者通过自动标记等方式使现有的现象被禁用或自动化。
可以这样做,例如:
修改表和添加列
最终,表可能变得太大(按列排列),但实现起来很容易,即使有一个有60列的表似乎很笨拙。我不确定它是否像看上去那么低效。
)
例如,作为JSON文档或在非关系数据库(如MongoDB )中。这在直觉上是有意义的,因为我提出了一个灵活(因而非关系/无模式)的注释解决方案。但是,将两个数据库连接在一起可能不必要地增加应用程序的复杂性。此外,使用外键可能变得不可能这样(?)。
blob存储在MySQL列中
我几乎没有处理气泡的经验,因为我一直在避免它们。我在另一个问题上读到的
中的EAV表中
似乎是模仿关系数据库中的非关系行为的一种讨厌的方式。我还读到它可能会导致性能问题。
我想听听关于哪种方法更好的建议,或者如果有完全不同的东西,我应该看看。
发布于 2016-05-03 01:48:53
JSON文档正是实现这一目的的理想方法。MySQL可以存储JSON文档通过它的JSON数据类型,并且它具有在这些文档中提取信息的各种功能。但是,MySQL目前还没有一种有效的原生方法来索引JSON文档以进行快速搜索。谷歌搜索"mysql json索引“将提供几种这样做的策略,一些使用触发器和外部表,另一些使用计算列上的索引。
然而,PostgreSQL对JSON数据类型有很好的支持,包括索引、将文档作为记录集打开(使用左连接横向结合jsonb_each非常强大)和支持JSON文档的GIN索引(对于标记和内容)。除非您已经对MySQL进行了大量投资,否则PostgreSQL将是您的应用程序的一个很好的选择。或者,如果仅为此目的使用PostgreSQL而不是MongoDB,则可能需要考虑它。此外,PostgreSQL可以通过外部数据包装器轻松地访问MySQL表,它对regex文本操作有很好的支持,您可以使用pl/perl存储过程通过标准的MySQL库对JSON文档执行各种魔术。
https://dba.stackexchange.com/questions/136242
复制相似问题