CockroachDB TO:第 1 卷

在我剥离 CockroachDB 的各个层时,请阅读包含简短“今天我学到的”主题的新系列文章中的这篇初始文章。

这是一个新的系列文章,在我剥离 CockroachDB 层时涵盖简短的“今天我学到的”主题。这是为了类似于发行说明。我决定将它与这些帖子的格式混合起来,因为它们可能无法证明整个博客的合理性。

话题

主题 1:使用 CockroachDB 进行单元测试

我经常收到这样的问题:“作为应用程序开发的一部分,对 CockroachDB 进行单元测试的最佳方法是什么?” 根据用例,我们可以采取几种方法。有一个古老的 [cockroach 演示](
https://www.cockroachlabs.com/docs/stable/cockroach-demo.html),当我急需一些东西时,它一直是我值得信赖的首选工具。它带有企业功能的一小时许可证,您也可以对其进行单元测试,但它也有一定的限制。例如,在创建表时 告了延迟,直到最近的端口都是随机的且不可配置,默认情况下它会加载数据,您也可以使用标志来克服这些数据。的目标
cockroach demo是快速启动一个用于演示目的的工作环境,而不一定是为单元测试设计的东西。

cockroach demo –no-example-database –sql-port 26257

正在积极记录的另一个选项是–store=type=mem,它是 CockroachDB 的内存版本,您可以在本地启动。默认情况下,它没有启用企业功能。为此,您必须提供有效的许可证。这个选项的感觉和行为就像一个真正的集群,并且得到了我们的单元测试工程的祝福。它旨在用于应用程序开发测试,并将成为我们前进的方向。一个警告是,当你开始蟑螂时,你必须指定商店的大小。

cockroach start-single-node –store=type=mem,size=5GB –background –insecure –http-addr=127.0.0.1:8080 –advertise-addr=127.0.0.1:26257

我注意到一些行为变化,我在下面逐项列出:

观察

  1. 创建一个goroutine_dump,heap_profiler目录
  2. 不创建cockroach-data目录来保存数据
  3. 默认将日志输出到控制台
  4. 需要显式关闭命令才能终止

随着我们迭代和处理客户反馈,许多发现可能会发生变化。

最后,我想提一下 Docker 仍然是一个可行的选择:我在 Docker Compose 中编写了很多测试用例。还有一个很有前途的项目,叫做TestContainers,我还没有去探索。遗憾的是,它仅限于 Java 语言。

主题 2:覆盖 CockroachDB 集群 ID

我刚刚了解到集群 ID(通常是出现在 DBConsole 上的随机 UUID)可以被客户提供的 ID 覆盖。您可以使用–cluster-name=<id>标志来做到这一点。这在具有许多集群的环境中很有用,并且任意 ID 不容易记住哪个集群是哪个。

爪哇

cockroach start-single-node   --background   --insecure   --http-addr=127.0.0.1:8080   --advertise-addr=127.0.0.1:26257   --cluster-name=customname

主题 3:CockroachDB 和 PG 中的睡眠命令

select pg_sleep(seconds); 将完全按照您的想法执行:在 SQL 控制台中休眠预定的时间段。

爪哇

root@127.0.0.1:26257/defaultdb> select pg_sleep(10);  pg_sleep------------    true(1 row)Time: 10.002s total (execution 10.002s / network 0.000s)

话题四:在 SQL 客户端设置时区

您可以使用以下语法在客户端设置时区:set timezone=default;

爪哇

show timezone;  timezone------------  UTC

设置自定义时区:

set timezone=”America/New_York”;

爪哇

show timezone;      timezone--------------------  America/New_York

如果您在交互式 SQL shell 中,这可以正常工作,但如果您需要在 SQL 客户端初始化时设置时区,则必须将时区作为参数传递给连接字符串:

cockroach sql –url “postgresql://root@127.0.0.1:26257?sslmode=disable&timezone=America/New_York”

爪哇

# Welcome to the CockroachDB SQL shell....show timezone;      timezone--------------------  America/New_York

请注意,在前一种情况下,我们必须将自定义时区括在双引 中,但在连接字符串的情况下则不然。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月9日
下一篇 2022年7月9日

相关推荐