我有一个项目要求我动态创建表格。创建表时,每个表中至少需要支持1000列。所有INT,日期,BIT都将成为索引。所以一张桌子上可能有大约400个索引。将数据上载到服务器后,不会对表执行其他插入或更新。我将使用像lucene这样的库来索引文本。
我的问题是:
我很清楚这里的数据库规范化设计问题。我已经完全研究了规范化问题,并且创建了许多表和列是最好的解决方案。
答案 0 :(得分:2)
免责声明:我是CUBRID团队的一员。
简答:
答案很长:
如CUBRID RDBMS Size Limits所述,只要您有足够的磁盘空间,就可以创建无限数量的表,每个表的索引数量不受限制。
但是,每个表的列数限制为6400,这对我来说应该足够了。
这取决于您将拥有的记录数量。如果你在一行中没有这么多列,那就没那么重要了。记录数不仅会影响数据卷大小(存储数据的磁盘上的文件),还会影响索引卷大小,其中存储索引键和值。我怀疑,使用您当前的架构设计,您的索引卷大小有数千列,这将远远大于您的数据卷大小,因为每个索引都将存储您索引的列的所有值的副本。
创建一组适当的索引可以提高性能。
但你应该认真考虑规范化你的数据。
此外,您的硬件配置将显着影响服务器的性能。对于您的情况,强烈建议使用大容量RAM和CPU。
使用此类架构时,任何其他RDBMS都将面临类似问题。通常,CUBRID通过定义良好的索引提供高SELECT性能。所以你应该专注于此。
您可以使用three GUI tools来管理数据库。
CUBRID符合SQL92标准。因此,您可以定义表并在同一事务中插入记录。