java - 用什么来存储可以查询的序列化数据?

标签 java database nosql

我需要从任何格式的传入消息中提取数据。要存储的提取数据也取决于格式,即格式 A 可以提取字段 X、Y、Z,但格式 B 可以提取字段 A、B、C。我还需要通过在消息。

现在我正在配置和存储提取策略 (XSLT) 并在遇到相关格式时在运行时执行它,但我将提取的数据作为 XmlType列。 Oracle 似乎对 XmlType 的开发/支持相当松散,因为它需要一个旧的 jar,迫使您使用相当旧的 DOM DocumentBuilderFactory impl(看起来像 Java 1.4 代码),它与 Spring 3 冲突,并且不能很好地与 Hibernate 一起玩。 XML 查询也很慢且不直观。

我的结论是使用 XmlType 的 Oracle 不是存储提取数据的好方法,所以我的问题是,存储序列化/可查询数据的最佳方法是什么?

  • NoSQL(CassandraCouchDBMongoDB 等)?
  • JackRabbit 这样的 JCR ?
  • 手动反/序列化的 blob?
  • 另一个 Oracle 解决方案?
  • 还有别的事吗??

最佳答案

您未列出的一个替代方法是使用 XML Database . (请注意,Oracle 是大约十种 XML 数据库产品之一。)

(显然,blob 类型不允许在持久的 XML 对象“内部”查询,除非您将每个 blob 实例读入内存并在那里进行查询;例如使用 XSLT。)

关于java - 用什么来存储可以查询的序列化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190245/

相关文章:

java - 使用 Jackson 序列化 TreeModel

mysql 工作台未与 mac 上的本地主机连接,无法连接到 '127.0.0.1 上的 MySQL 服务器 (49)

mysql - 重新整理返回的数据,将字段值设置为新列

database - 是否有像 Retwis for Redis 这样的 Cassandra 数据建模练习?

java - 打开键盘时 native 堆内存大小增加 - android

java - 文件重命名不起作用

database - 需要比较 Firebird 中的 Blob

redis - 如何在redis中一次从多个键中获取多个字段的值?

javascript - 如何撤消对未同步集合的更改?

java - 如何确定哪个方法产生最多垃圾