Ruby Ruby 程序内的类实例数据存储问题

L-codes · January 04, 2023 · Last by EvanYa replied at January 12, 2023 · 451 hits

写了一个有大量类实例数据的程序,而这些类实例对象的数据需要存储,想到的是用Marshal等序列化导出保存到文件,下次运行时通过反序列化加载回状态,但是这样做效率比较差,比如我只做了小许的数据修改,就要重新全部对象反序列化重新覆盖。请问各位师傅有更好的解决方案吗?想找类似依赖外部数据库,但是自动对我 ruby 对象的数据实现自动存储的gem

可以 ActiveRecord + SQLite 数据库。

Reply to Rei

这样是要把 Ruby 的类都定义表的格式进行存储了喔,而我每个实例里面存储的数据都是多结构,并且都互相关联,那就是每个 Class 都定义成表?有没有其他方案?感觉图数据库会更加适合的

Object-Relational Mapping 只有 ActiveRecord 一种吗?还有其它推荐?

MongoDB schema-free 这种也可以考虑一下。
Redis 理论上也行。https://github.com/redis-stack
或直接内嵌 KV 数据库 leveldb-ruby.

Reply to cxh116

嗯 刚了解了一下 也许相较之下 ActiveRecord 会更加好

SQL 数据库支持 JSON 类型,多层次数据可以尝试用 JSON 类型储存。

不过 JSON 类型不像一般字类型可以添加约束,迁移比较麻烦,查询比较复杂,适用于不需要查询、没有关联的数据。有关联的数据建议用表的方式储存。

Reply to Rei

好的 谢谢 我后续再看看

8 Floor has deleted
Reply to Rei

json 可以考虑利用 json schema 加限制,但带来的成本就看如何平衡了

You need to Sign in before reply, if you don't have an account, please Sign up first.