【问题标题】:Anyone know of a generic transactional Map | Set | List任何人都知道通用事务地图|设置 |列表
【发布时间】:2011-01-17 11:15:13
【问题描述】:

我能找到的唯一真正可用的库是Apache Commons Transaction Library

Apache Commons Transctions 的问题

  • 2008 年最后一次发布(3 年)
  • 非通用
  • 对日志记录 f/w 的依赖性 - 我们是否需要用于地图的记录器!?!
  • 认为我在某个地方(prolly the doco)看到它不是 XA。

特征 id 喜欢

  • 可用的集合应该是通用的
  • 应该批量更改直到回滚(忘记所有更改)或提交。
  • 脏读等也应该是一个特性。
  • 线程独立,不同的线程应该能够参与不同的 txs。
  • 视图也应该是事务 - 例如Map.entrySet()
  • XA 会很好,这样集合实例可以参与两阶段提交。

【问题讨论】:

  • 你能说出你想看到的究竟是什么事务吗?如果它可以包括锁定,那么实现起来相对简单,那么还有一个无锁版本的事务映射。什么是泛型,你需要用旧的内存模型运行java1.4?
  • @bestsss OP 说他想要仿制药。
  • 我开始怀疑内存数据库是否是一个更简单的答案。你为什么需要这个?我很想知道需要它的场景是什么。
  • bestsss:内存数据库也可以轻松地提供对许多事物的 O(1) 访问。但是,正如您所暗示的那样,您的常量 k 可能更大。
  • @skaffman 通过事务我的意思是,在 tx 时提交更改,如果 tx 失败则回滚等,ACID 的 ID 位当然不会因为它只是一个内存映射。

标签: java collections transactions


【解决方案1】:

Infinispan 是一个完全启用 XA 的缓存,它也是 implements 自版本 4 以来的 ConcurrentMap。

【讨论】:

  • Infinispan 可以用作非缓存吗?我的意思是保证不会丢弃旧元素。
【解决方案2】:

也许JDBM 符合您的要求?它具有事务性磁盘支持的集合实现。

【讨论】:

【解决方案3】:

我猜这个有点令人沮丧但显而易见的答案是:

如果您需要数据库功能,为什么不使用数据库?

如果您使用 HyperSonic (HSQL) 之类的内存解决方案,您几乎无需进行任何设置,并且您拥有内置的事务和许多其他功能

【讨论】:

  • 因为我想要/需要一张地图 |设置 |列表。我不想引入 HSQL 并且必须为 Map 编写适配器 |设置 |列出往返 HSQL。从理论上讲,像 HSQL 这样的内存解决方案效率很低,因为所有操作都会导致许多选择等。
【解决方案4】:

http://commons.apache.org/transaction/index.html 提供包装器来映射事务访问,包括可序列化等事务级别。

【讨论】:

  • * 不是 xa,死了?自发布以来已近 3 年
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-06
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多