问题标签 [google-cloud-spanner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
810 浏览

database - Google 的 Spanner DB 是否实现了 Epochal Time 的概念?

我正在阅读Google 的 Spanner DB的论文。这似乎解决了Rich Hickey 的 Datomic 的一些类似问题。

Google 的 Spanner DB 是否实现了Epochal Time的概念?

0 投票
1 回答
12468 浏览

c - 为什么 Google 的 TrueTime API 难以复制?

我不确定为什么媒体普遍说 Google 的 TrueTime API 难以复制(Wired、Slashdot 等)。

我可以理解要获得谷歌正在实现的低错误间隔是一件多么困难的事情,但我不明白 API 本身有多困难。

例如,我制作了一个 hacked together 版本。这是间隔。

这是现在的功能。

最后,这里是 before 和 after 函数(它们是 now 函数的包装器,可以使用一些 DRY 重构)。

我似乎得到了大约 5,000us 到 350,000us 的间隔错误(使用公共 NTPd)。这与谷歌的数字相去甚远,但你需要从某个地方开始。

除了性能不佳之外,这种设计是否存在重大缺陷会阻止像 Spanner 这样的东西被构建在上面?

0 投票
3 回答
138 浏览

proxy - 在 Google Spanner 中,每个区域的位置代理如何实际使用并保持最新?

这是Spanner 论文用单行掩盖的一个细节,我希望 Google 的某个人能够解释一下。

客户端使用每个区域的位置代理来定位分配给其数据服务的跨度服务器。

  1. 客户端如何确定位置代理的 IP 地址?
  2. 在他们检索数据之后,客户端是否将这些数据缓存在某个地方,或者他们是否在每次读取和写入时都与位置代理通信?
  3. 如果客户端上有缓存,客户端如何发现需要更新?
0 投票
2 回答
658 浏览

time - Spanner 的只读事务

我确实了解 Spanner 在一个 paxos 组中的只读事务。

但是多个 paxos 组上的只读事务是如何工作的呢?该论文说它TT.now().latest用作时间戳,然后使用给定的时间戳执行快照读取。但为什么这行得通?

在每个副本中,都有一个安全时间。安全时间是副本中最后一次写入事务的时间戳。副本是最新的,如果asked timestamp <= safe time.

该论文还说,使用给定时间戳(只读事务的第二阶段)读取的快照可能需要等到副本是最新的。如果在读事务之后,将永远不会发生任何写事务,会发生什么情况?那么安全时间永远不会更新,读取事务会永远被阻塞?

0 投票
2 回答
247 浏览

google-cloud-platform - xSpanner:领导者如何将数据同步到副本?

Spanner:Google 的全球分布式数据库,第 2.1 节中,我们读到:

为了支持复制,每个 spanserver 在每个 tablet 上实现一个 Paxos 状态机。(早期的 Spanner 化身支持每个平板电脑多个 Paxos 状态机,这允许更灵活的复制配置。该设计的复杂性导致我们放弃了它。)

Paxos 状态机用于实现一致复制的映射包。

这个单一的 Paxos 状态机是否类似于“Paxos Made Simple”中提到的 Paxos 状态机?

我很好奇一旦一位新领导人选出了如何学习所有丢失的数据。任何人都可以在 Spanner 中描述 Paxos 组的详细实现吗?

0 投票
2 回答
815 浏览

google-cloud-platform - 在 Spanner 的两阶段提交中如何避免阻塞?

我读过两阶段提交遇到阻塞问题。

但是在 Google 的 Spanner 论文中,他们写道 Google 在 Spanner 中使用了两阶段提交。

我的问题是:这个阻塞问题是如何在 Spanner 中解决的?

0 投票
3 回答
71069 浏览

google-cloud-platform - BigQuery 和 Bigtable 有什么区别?

为什么有人会使用 Bigtable 而不是 BigQuery?两者似乎都支持读取和写入操作,后者还提供高级“查询”操作。

我需要开发一个附属网络(因此我需要跟踪点击次数和“销售”),所以我对这种差异感到非常困惑,因为 BigQuery 似乎只是具有更好 API 的 Bigtable。

0 投票
1 回答
5546 浏览

database - Google Spanner 中的 TrueTime API 是什么?

我试图多次阅读该文件,但未能理解。有人可以通俗地解释一下吗?

0 投票
1 回答
123 浏览

google-cloud-platform - 以编程方式构建 SQL 查询

我想根据我的用户传入的一些字符串自动构建一个 SQL 查询。Cloud Spanner API 中是否有任何辅助方法可以做到这一点?

0 投票
1 回答
256 浏览

google-cloud-platform - Google Cloud Spanner:想要 Java API 进行自己的重试

这确实是Google Cloud Spanner Java API 团队的一个问题……

查看新的Google Cloud Spanner服务,似乎执行读/写事务的唯一方法是通过TransactionRunner接口提供回调。

我知道 API 试图隐藏需要自动重试事务的细节以方便程序员,但这个限制是一个严重的问题,至少对我来说是这样。我需要能够自己管理事务生命周期,即使这意味着我必须执行自己的重试(例如,基于捕获某种“可重试”异常)。

为了使这个问题更具体,假设您想PlatformTransactionManager为 Google Cloud Spanner 实现 Spring,以适应您现有的代码,并使用您现有的重试逻辑。用当前的 Java API 似乎不可能做到这一点。

似乎很容易以向后兼容的方式扩充 API,添加一个返回 aTransactionContext给用户的方法,并让用户处理重试。

我错过了什么吗?可以将这种替代(更传统的)事务 API 样式添加到 Java API 中吗?