存储后端如何影响 Datomic?

2024-02-21

我该如何选择 Datomic 的后端存储服务?

选择 DynamoDB 而不是 Postgres 是一个偏好问题,还是每个选项都有不同的权衡?如果有,它们是什么?


存储服务要求

Datomic 的存储服务一般应满足 3 个要求:

  1. 实施键值存储语义:使用索引键值进行高效的读/写访问
  2. Support 一致的读取。例如读你自己写的。理想情况下,无争用/无锁读取。
  3. Support 有条件看跌期权。例如乐观锁+快照隔离。

Datomic 使用存储服务来存储排序、压缩的 datom 块,类似于传统数据库系统使用文件系统的方式,并且上述要求几乎是底层存储服务和 Datomic 之间的 API。所以choice存储服务取决于他们对这三个要求的支持程度如何.

写入可扩展性

Datomic 通常不会对底层存储服务施加很大的写入压力,因为只有一个组件(Transactor)对其进行写入。此外,一旦积累了足够的存储空间(默认约为 32MB,但可以配置),Datomic 使用后台索引作业将新颖性集成到存储中,这进一步减少了恒定的写入负载。 Datomic 立即写入的唯一内容是事务日志。

阅读可扩展性

Datomic 使用多层缓存,即 memcached 和对等缓存,因此在理想情况下,即当工作集适合内存时,系统也不会施加很大的读取压力。

系统负载

如果您的系统不需要huge写入可扩展性并且您的应用程序数据往往适合内存,那么特定存储服务的选择是不相关的当然,除了与 Datomic 无关的操作功能(备份、管理工具等)。

另一方面,如果您的系统确实需要huge写入可扩展性,或者您有大量的对等方,每个对等方处理的数据都超出了其内存的容量(迫使从存储中取出大量数据段),您将需要一个可以水平扩展的存储系统,例如DynamoDB。正如其中一条评论中提到的,如果您需要任意写入可扩展性,Datomic 无论如何都不是适合您的系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储后端如何影响 Datomic? 的相关文章

  • 使用 pg-promise 进行多行插入

    我想用一个插入多行INSERT查询 例如 INSERT INTO tmp col a col b VALUES a1 b1 a2 b2 有没有一种方法可以轻松地做到这一点 最好是对于像这样的对象数组 col a a1 col b b1 co
  • 由于命名约定,使用 DynamoDB AWS SDK [无哈希键映射] 时出错

    在使用 AWS JAva SDK 时 为了定义 DynamoDBHashKey 我们使用 DynamoDBHashKey 注释 奇怪的是 如果我使用如下注释 DynamoDBHashKey String Abc 代替 DynamoDBHas
  • 枚举和 Clojure

    在Java C世界中 人们经常使用枚举 如果我使用的是使用枚举的 Java 库 我可以在它们和关键字之间进行转换 例如 使用 java lang Enum valueOf e aget Ljava lang Enum e getEnumCo
  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • 如何在一列中存储数组或多个值

    运行 Postgres 7 4 是的 我们正在升级 我需要将 1 到 100 个选定项目存储到数据库的一个字段中 98 的情况下 只会输入 1 个项目 而 2 的情况下 如果是这样的话 会输入多个项目 这些项目只不过是文本描述 截至目前 长
  • pg_stat_activity 中具有“空闲”状态的持久“COMMIT”查询

    如果我查询 select from pg stat activity where application name example application 我得到了很多行 哪个州是idle查询是COMMIT 它们是持久的并且不会消失 一段时
  • AmazonServiceException:用户无权执行:dynamodb:DescribeTable 状态代码:400;错误代码:AccessDeniedException

    我原本以为这个问题是由于区域不匹配造成的 但是在更改区域后 在尝试此处找到的 Amazon AWS 示例时 我仍然遇到以下错误 DynamoDB映射器 https github com awslabs aws sdk android sam
  • 尝试使用 Rails 和 PostgreSQL 生成模型时,命令挂起且没有错误

    使用该命令时 rails generate model Event name string 什么也没发生 我必须按 CTRL c 我使用的版本是 红宝石 2 1 1p76 导轨4 1 0 PostgreSQL 9 3 4 Mac OS X
  • 在单个查询中设置和选择?

    我想知道是否可以在单个查询中设置和选择 像这样的事情 SET LOCAL search path TO 1 SET LOCAL ROLE user SELECT from posts 你可以这样做 with some set as sele
  • 查询交叉表视图

    我在 PostgreSQL 中有一个表 如下所示 Item1 Item2 Item3 Item4 Value1 Value2 Value3 Value4 我想要一个查询 该查询将显示如下表 ItemHead ValueHead Item1
  • 在抛出异常之前重试某件事 3 次 - 在 clojure 中

    我不知道如何在Clojure中实现这段Python代码 for i in range 3 try except e if i 2 raise e else continue else break 我想知道为什么在 Python 中如此简单的
  • JSON 值的模式匹配

    运行 Postgres 12 5 的本地 docker 实例 4MBwork mem 我正在实施这个图案 https dba stackexchange com q 108447 3684搜索 json 中的任意字段 目标是搜索并返回 JS
  • Postgres where 子句比较时间戳

    我有一个表 其中列的数据类型timestamp 其中包含一天的多条记录 我想选择与日期对应的所有行 我该怎么做 Assuming you actually mean timestamp because there is no datetim
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 如何在 dynamodb 上获得十亿个对象的不同计数?

    获取我的 dynamodb 中存储的不同对象数量的最有效方法是什么 例如我的对象有 10 个属性 我想根据 3 个属性获得不同的计数 如果您需要计数器 最好使用 AtomicCounters http docs aws amazon com
  • PostgreSQL:比较 json [重复]

    这个问题在这里已经有答案了 众所周知 目前 PostgreSQL 还没有方法来比较两个 json 值 比较就像json json不起作用 但是选角呢json to text before Then select x a y b json t
  • 随机数据库与 AWS 中的 Django 和 Postgresql 断开连接

    我试图找出 Django 和数据库连接错误问题的根源 此时 我正在调试提示 因为我认为症状太不具体 一些背景 我一直在使用这个堆栈 在 AWS 中部署了很多年 没有出现任何问题 Ubuntu 在本例中为 20 04 LTS Nginx Uw
  • postgresql 中的锁定表

    我有一个名为 games 其中包含一个名为 title 该列是唯一的 数据库中使用PostgreSQL 我有一个用户输入表单 允许他插入新的 game in games 桌子 插入新游戏的功能会检查之前输入的游戏是否存在 game 与相同的
  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8
  • Ubuntu 12.04 上的 DeepDive 安装指南

    在拥有以后很多问题 https stackoverflow com questions 22469188 deepdive installation postgresql error安装深潜项目 http deepdive stanford

随机推荐

  • 这三个for循环的复杂度是多少?

    Having 输入数组A 1 n N的长度A 算法 for int i N i gt 0 i Loop 1 for int j 1 j
  • 如何从 Google 云端硬盘下载文件

    我目前正在尝试制作一个从 Google Drive 下载文件的应用程序 在 Google Drive SDK 文档中 我找到了一个应该返回 System IO Stream 对象的示例方法 https developers google c
  • 文件名的 LEX 槽类型。 AMAZON.LITERAL 替代品

    我必须用示例话语创建意图 打开文件 文件名 显示 文件名 基本上 我必须有一个接受文件名的插槽 用户可以输入 打开我的文件报告 pdf 打开文件活动1 doc 打开文件去年报告 如果我可以使用 AMAZON LITERAL 类型 它会完美地
  • 从相同类型的另一个对象更新实体框架对象

    是否有任何方法可以从强类型对象更新对象而不列出每个字段 让我们考虑以下情况 using var context new MyDBEntities var user User Session EditedUser var oldUser co
  • Chrome 102:已被 CORS 策略阻止:请求的目标 IP 地址空间为“未知”,但资源位于“私有”地址空间中

    我们有一个托管在 LAN 中的基于 Web 的系统 非 SSL 从 Chrome 102 Windows Ubuntu 开始 我们面临一个随机的 CORS 问题 描述为 已被 CORS 策略阻止 请求具有目标 IP 地址空间 为 未知 但资
  • JS addeventListener 点击消失

    我创建了简单的fidlle https jsfiddle net 0nm4uLvd var cnt 1 function add var root document getElementById root root innerHTML br
  • 无法运行从 spring-boot jersey 生成的 jar

    我无法使用带有 jersey 项目的 spring boot 运行生成的 jar 文件 我遇到的例外是 Error starting Tomcat context Exception org springframework beans fa
  • 如果验证后我决定将元素移回原处,如何将 jquery-uidraggable 恢复为 true?

    我正在寻找一种方法 如果某些内容未验证 则从恢复状态触发事件 例如 如果元素不存在 它将从另一个列表中创建它 但如果它已经存在 则应该转到 else 并将元素返回到其原来的位置 catalog ul droppable tolerance
  • 如何在 Java 中使用 Scala 单例对象?

    我有一个需要在 Java 类中使用的 Scala 对象 这是 Scala 对象 object Person val MALE m val FEMALE f 如何在 Java 中使用这个 Scala 对象 到目前为止 我已尝试以下操作但没有成
  • 使用私有 git 存储库来阅读文档

    我安装了 read the docs 以从需要用户 密码身份验证的私有 git 存储库上的项目开始生成文档 手动导入项目时 如何输入用户名和密码以允许阅读文档克隆存储库 非常感谢 最大限度 我最近遇到了同样的问题 这里还有一个这样的问题为什
  • DataGrid 选项卡导航跳过列

    我在 WPF 中有一个带有模板列的数据网格 网格中的几列是只读的 其他焦点变为可编辑 而不是出现标签 文本框 复选框等 我想要实现的是 当我在网格的列中进行切换时 只读列将被跳过 有人知道如何实现这一目标吗 谢谢 弗拉丹 不 不工作 这是完
  • 如何实现自定义 UIDynamicBehavior 操作

    我一直在寻找一个示例 展示如何在 UIKit 动态中实现自定义 UIDynamicBehavior 所有教程和示例仅展示如何使用基元 碰撞 重力 附件 推动 捕捉等 组装 UIDynamicBehavior 在我的应用程序中 一些视图在屏幕
  • 在 Commodore 64 中绘制屏幕边框

    我的好奇心已经持续了 25 年 我很想了解其中的奥秘 在 Commodore 64 中 6569 VIC 无法寻址边界 您所能做的就是在中心区域 光标移动的区域 绘制像素 边框总是统一的 尽管你可以用 poke 53280 改变它的颜色 如
  • 在Mac OS上使用GCC为MS-DOS编译C程序(DOSBox)

    我在Mac OS X上的Snow Leopard下运行GCC 4 2 1 我想用它来编译我15年前写的一些旧的C C DOS游戏 以便我可以在下面运行它们DosBox http www dosbox com 为此 它们显然需要编译为 DOS
  • 两个列表,Python 中的比较速度更快

    我正在编写 python 2 7 脚本来比较两个列表 这些列表是通过读取文件内容从文件创建的 文件只是文本文件 没有二进制文件 文件 1 仅包含哈希值 某些明文单词的 MD5 和 文件 2 是 hash plain 列表具有不同的长度 从逻
  • Git 丢失更改[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 今天在使用 Git 的时候遇到了一些问题 我真的无法理解 我们的团队有一个私人 github 存储库 我从该共享存储库中提取了一些更改 完成
  • F# 中的受歧视联盟是什么以及 OOP 中我们有什么类型的替代方案

    我正在从 C 开始学习函数式编程 当然 由于我对 C 有着深入而详细的了解 我选择了我的第一个函数式语言 F 并尝试投入时间来学习它 现在我需要了解什么是受歧视的工会为什么它很重要以及为什么我们真正需要它 我确实做了很多研究 但导师 讲师
  • float() 的文字无效:0.000001,如何修复错误?

    我有一个包含 3 列数据的 csv 文件 我需要创建一个新的输出文件 其中包含原始文件第一列和第三列中的一组特定数据 第三列包含十进制值 我相信在这种情况下我已经使用了 python 的 float 功能 我尝试过以下代码 in file
  • 图神经网络中的梯度爆炸问题

    我有一个梯度爆炸问题 尝试了几天后仍无法解决 我在 TensorFlow 中实现了一个自定义消息传递图神经网络 用于根据图数据预测连续值 每个图表都与一个目标值相关联 图的每个节点由节点属性向量表示 节点之间的边由边属性向量表示 在消息传递
  • 存储后端如何影响 Datomic?

    我该如何选择 Datomic 的后端存储服务 选择 DynamoDB 而不是 Postgres 是一个偏好问题 还是每个选项都有不同的权衡 如果有 它们是什么 存储服务要求 Datomic 的存储服务一般应满足 3 个要求 实施键值存储语义