在数据结构中持久化和还原数据

时间:2018-08-28 06:45:26

标签: data-structures

我是数据结构的新手,并且了解应该在内存中访问列表,堆栈,队列,树等数据结构,有关如何将数据结构持久存储在数据库中的问题some suggestions。 / p>

所以问题是:

  1. 要保留数据结构,必须以最有效的方式对其进行解构并保存到数据库中,以便以后进行重组?

  2. 要恢复数据结构的数据,必须先从数据库中读取数据,然后在重新启动/故障后系统启动时再次重建数据结构?

  3. 这是一种惯例吗,还是有一种适当的方法可以防止重建数据结构(因为它们消耗了计算能力)?

1 个答案:

答案 0 :(得分:1)

  1. 这取决于数据结构 对于列表,堆栈,队列,树等结构,它们通常使用指针(指向下一个节点的指针,指向子节点的指针等)实现。
    这些仅存在于内存中的指针包含有关数据结构的信息,因此您将需要一种有效的方法来转换此结构信息
    例如检出leetcode上的树序列化:
    https://leetcode.com/faq/#binary-tree
    对于可以在没有指针(例如字符串,二进制堆等)的连续内存段中实现的数据结构,您不需要此过程,只需将内存段的位保存在数据库中

  2. 是的,这是非常普遍的做法,从历史上看,XML一直是这种格式的选择,JSON在最近更流行 许多服务的工作方式是:获取数据库中的持久XML数据,在内存中构建数据结构,执行一些操作,然后保存结果

如果您考虑一下,整个网络的工作方式如下: https://en.wikipedia.org/wiki/Document_Object_Model
每个HTML页面实际上都是序列化的树数据结构,您的浏览器会在内存中对其进行重构