更新 mnesia 模式的最简单方法是啥?
Posted
技术标签:
【中文标题】更新 mnesia 模式的最简单方法是啥?【英文标题】:What's the simplest way to update mnesia schema?更新 mnesia 模式的最简单方法是什么? 【发布时间】:2013-04-06 13:37:32 【问题描述】:例如,我在 mnesia 中保存了id, name
,想更新为id, name, age
,是否每次更改架构时都必须调用transform_table
?
【问题讨论】:
您还希望能够做什么?您必须通过一些函数调用来更改表格,对吗?但是,transform_table/3-4 确实为您提供了一些选项来更改调整架构的方法。 是的。你必须改造那张桌子 当 mnesia 表变得非常大时,transform_table 是否需要很长时间?如果是这样,会影响热代码升级的好处。如果通过其他方案,跟踪记录版本,只升级已加载的记录,可能会导致升级代码繁琐且容易出错。 欢迎来到大数据世界,在其中移动和升级数据需要花费太多时间。您最终需要对数据进行版本化并支持多个版本。在实践中没有办法解决这个问题,尽管这很烦人。仅当数据规模较小时,数据转换才可行。 当我在生产中使用 mnesia 时,总是在每个表中添加一个options::proplists()
列:)
【参考方案1】:
最简单的方法是删除表并重新创建它。如果您需要将数据保留在表中,mnesia:transform_table
是要走的路。
【讨论】:
您不认为删除和重新创建表可能会破坏生产系统。 在大多数情况下,是的,除非您在重新创建表时使其不访问数据库。transform_table
避免了此类问题。
是的,transform_table 是解决此类问题的不错方法。我只是给出了更广泛的答案。以上是关于更新 mnesia 模式的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
从另一个组件更新组件状态的最简单方法是啥?可以说组件是兄弟姐妹吗?