数据库是否可以被完全覆盖 n 次而不会有截断数据的危险?
May a database be completely overwritten for n times without danger to truncate data?
一个简单但可能过于业余的问题,但是:数据库上的 table 是否可以始终(例如,每天)完全覆盖?
我从头到尾拿到一整年的数据day/week/month。你可以只追加新的月份,但我担心文件中有过去几个月的一些新数据。所以每次我得到一个新文件时,我都想覆盖我的table。但是 table 可以吗?我的意思是它会以某种方式破坏它吗?
编辑:
我的问题的背景是我覆盖了 RapidMiner 工具中的数据,我不知道它使用什么方法。所以我可能应该和 RapidMiner 支持人员谈谈这件事。
在我看来,您无法破坏这种情况下的某些特定内容,但总的来说这似乎是一种非常奇怪的行为。
我想,您需要一些与您现在使用的完全不同的东西。我没有完全理解问题,也许你可以提供更多的算法来解决你的问题?
替换历史数据是一种合理的做法。在加载新数据之前,大概您正在做以下事情之一:
- 截断现有 table
- 正在删除行
- 删除 table
其中只有第二个冒着 table 碎片化的风险。但是当数据被批量加载时,这可能不是什么大问题。
更大的问题是历史数据何时发生变化。那么,您 1 月份的结果可能会有所不同 ,因为数据发生了变化。当您删除旧数据后,这可能很难跟踪。
此答案的目的不是为该问题提供解决方案(这不是您问题的一部分)。只是指出除了覆盖 table.
之外可能还有其他考虑因素
嗯,这里是一个简短的总结。
- 这取决于数据库。
For instance, regularly overwriting a Datomic database would be a Really Bad Idea -- not due to corruption, but on account of storage requirements. by @Charles Duffy
我也在 "Database Administrators" 社区网站上发布了这个问题并得到了答案,RDBMS 不应该通过多次覆盖数据来破坏我的数据。
删除行会分割 table,而不是删除 table。
"But that probably isn't a big deal when the data is being loaded in
bulk" (by @Gordon Linoff)
- 因此 RDBMS 不会损坏,但您还需要注意一些其他事项:存储要求等
结论:多次完全覆盖数据对数据库没有直接(负面)影响。
谢谢大家的回答。我的问题的上下文是我不是自己覆盖数据,而是在 RapidMiner 工具中覆盖数据,我不知道它使用什么方法。
CREATE TABLE new ...
load `new`, not `real`
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
这使 table 始终可用,即使在您重新加载它时也是如此。
一个简单但可能过于业余的问题,但是:数据库上的 table 是否可以始终(例如,每天)完全覆盖?
我从头到尾拿到一整年的数据day/week/month。你可以只追加新的月份,但我担心文件中有过去几个月的一些新数据。所以每次我得到一个新文件时,我都想覆盖我的table。但是 table 可以吗?我的意思是它会以某种方式破坏它吗?
编辑: 我的问题的背景是我覆盖了 RapidMiner 工具中的数据,我不知道它使用什么方法。所以我可能应该和 RapidMiner 支持人员谈谈这件事。
在我看来,您无法破坏这种情况下的某些特定内容,但总的来说这似乎是一种非常奇怪的行为。
我想,您需要一些与您现在使用的完全不同的东西。我没有完全理解问题,也许你可以提供更多的算法来解决你的问题?
替换历史数据是一种合理的做法。在加载新数据之前,大概您正在做以下事情之一:
- 截断现有 table
- 正在删除行
- 删除 table
其中只有第二个冒着 table 碎片化的风险。但是当数据被批量加载时,这可能不是什么大问题。
更大的问题是历史数据何时发生变化。那么,您 1 月份的结果可能会有所不同 ,因为数据发生了变化。当您删除旧数据后,这可能很难跟踪。
此答案的目的不是为该问题提供解决方案(这不是您问题的一部分)。只是指出除了覆盖 table.
之外可能还有其他考虑因素嗯,这里是一个简短的总结。
- 这取决于数据库。
For instance, regularly overwriting a Datomic database would be a Really Bad Idea -- not due to corruption, but on account of storage requirements. by @Charles Duffy
我也在 "Database Administrators" 社区网站上发布了这个问题并得到了答案,RDBMS 不应该通过多次覆盖数据来破坏我的数据。
删除行会分割 table,而不是删除 table。
"But that probably isn't a big deal when the data is being loaded in bulk" (by @Gordon Linoff)
- 因此 RDBMS 不会损坏,但您还需要注意一些其他事项:存储要求等
结论:多次完全覆盖数据对数据库没有直接(负面)影响。
谢谢大家的回答。我的问题的上下文是我不是自己覆盖数据,而是在 RapidMiner 工具中覆盖数据,我不知道它使用什么方法。
CREATE TABLE new ...
load `new`, not `real`
RENAME TABLE real TO old, new TO real;
DROP TABLE old;
这使 table 始终可用,即使在您重新加载它时也是如此。