1

我有一个项目需要我即时创建表。创建表时,每个表需要支持至少 1000 列。所有 INT、日期、BIT 都将是索引。因此,一张表上可能有大约 400 个索引。一旦数据上传到服务器,就不会在表上执行其他插入或更新。我将使用像 lucene 这样的库来索引文本。

我的问题是:

  1. CUBRID 可以在一个数据库中处理 1000 个表吗?
  2. 在具有一千列和数百个索引的表上进行选择时,CUBRID 的性能如何?
  3. CUBRID 是否有一个 Windows GUI 界面来运行临时查询和管理表
  4. DDL 和 DML 语句可以在同一个事务中吗?

我很清楚这里的数据库规范化设计问题。我已经充分研究了规范化问题并得出结论,创建许多表和列是最好的解决方案。

4

1 回答 1

2

免责声明:我是 CUBRID 团队的一员。

简短的回答:

  1. 是的。
  2. 要看。
  3. 是的。
  4. 是的。

长答案:

  1. 正如CUBRID RDBMS Size Limits中提到的,只要您有足够的磁盘空间,您就可以创建无限数量的表,每个表的索引数量不受限制。

    但是,我猜每个表的列数限制为 6400,这对你来说应该足够了。

  2. 这取决于您将拥有的记录数量。如果一行中没有这么多列,那也没关系。记录的数量不仅会影响数据卷的大小(磁盘上存储数据的文件),还会影响索引卷的大小,即存储索引键和值的位置。在您当前拥有数千列的架构设计中,我怀疑您的索引卷大小将大大大于您的数据卷大小,因为每个索引都将存储您索引的列的所有值的副本。

    创建一组适当的索引将使您能够提高性能。

    1. 查看CUBRID 中的索引优化以了解有关如何优化查询的更多信息。
    2. 要进一步优化您的查询,请利用Index Hints


    但是您应该认真考虑规范化您的数据。

    此外,您的硬件配置将显着影响服务器的性能。对于您的情况,强烈建议使用大 RAM 和 CPU。

    在使用此类模式时,任何其他 RDBMS 都将面临类似的问题。通常,CUBRID 提供了具有良好定义索引的高 SELECT 性能。所以你应该专注于此。

  3. 您可以使用三种 GUI 工具来管理数据库

    1. CUBRID Manager : 一个多合一、强大的 CUBRID 数据库管理工具
    2. CUBRID Web Manager:CUBRID Manager 的基于 Web 的替代方案。
    3. CUBRID 查询浏览器:CUBRID Manager 的轻量级版本,没有主机管理和监控功能。
  4. CUBRID 符合 SQL92 标准。因此,您可以在同一个事务中定义一个表并插入记录。

于 2013-02-19T11:36:44.947 回答