【发布时间】:2015-09-26 09:46:58
【问题描述】:
我一直在尝试使用带有 HSQLDB 的 ALTER TABLE 命令向表中添加 2 列,但没有成功。我知道 MySQL 和其他系统支持它,但为什么 HSQLDB 不支持它?也许我使用了错误的语法,我不知道。我也知道我可以一一添加,但我的应用程序需要添加 1000 列,而且一一添加太慢了。
我使用 HSQLDB 的原因是我需要在文件模式下使用它。我也试过SmallSQL,但是比HSQLDB慢很多。
【问题讨论】:
-
具有 1000 列的表通常表示数据库设计不佳。你能解释一下为什么你认为你需要这么多列吗?为什么不能用最初的
create table语句创建它们? -
关于问题:“但为什么 HSQLDB 不支持它”。答案出人意料地简单:因为还没有人实施它。这是一个开源项目,所以如果你真的需要,你可以添加这个功能。
-
是的,我听说过大型系统。我维护了几个具有 1TB 和更多数据的数据库。它们都没有超过 200 列的表。您所描述的内容听起来好像您实际上想要一个适当规范化的一对多关系。如果您的客户观察到数千个“事物”,您应该在数据库中插入一千行 行。而且我怀疑 HSQLDB 首先是“大数据”的正确选择。
-
听起来你仍然不需要数千列。顺便说一句,您可能会考虑使用 Postgres 而不是 HSQLDB。它支持非常高效的键值存储 (
hstore) 和 JSON,我相信 Postgres 将比 HSQLDB 更适合处理“大数据”。但我认为既不需要键/值也不需要 JSON 解决方案——这也可以使用适当的规范化模型来处理。 -
您只需要三个表格:问卷、问答(可能是一个包含用户信息的表格)。类似:sqlfiddle.com/#!15/0a4e5/1 不知道你所说的“split the data”是什么意思
标签: hsqldb