问题标签 [cockroachdb]
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.
cockroachdb - 仲裁丢失后重试 SQL 插入时重复键值
我目前正在使用 3 个 cockroachDB 节点测试失败场景。
使用这种情况:
- 在循环中插入记录
- 关闭 3 个节点中的 2 个(模拟仲裁丢失)
- 等待足够长的时间,以便 Postgres JDBC 驱动程序引发 IO 异常
- 重启一个节点以恢复 Quorum
- 重试上一个失败的语句
然后我遇到了以下异常
这意味着当 Quorum 再次可用时,插入在第一次尝试时成功(我从中获得了 IO 异常)。问题是我不知道。
我不能假设“重复键值”异常是由应用程序逻辑问题引起的。是否有任何参数可以调整,以便基础语句在 IO Exception 之前回滚?或者也许是更好的方法?
测试是使用
- CockroachDB v1.1.5(3个节点)
- MyBatis 3.4.0
- PostgreSQL 驱动程序 42.2.1
- 爪哇 8
postgresql - libbqxx C++ API 连接到没有数据库名称的 PostgreSQL
我正在使用 PostgreSQL 的 libpqxx C++ 客户端 API 作为 cockroachDB 的驱动程序。来自 cockroachDB 文档:
这需要用户和数据库作为前提。是否有任何 C++ API 将其分为如下两个步骤?
我已经尝试了下面的代码,但它失败了,因为它需要 root 用户权限。
谢谢你的帮助!
hibernate - 带有 CockroachDB 的简单 CRUD 应用程序中的 org.hibernate.TransactionException
以下使用 Spring Boot、Hibernate、JpaRepository、CockroachDB 和 Kotlin 的最小 CRUD 示例生成org.springframework.orm.jpa.JpaSystemException
/ org.hibernate.TransactionException
。
有问题的实体Thing
只有两个字段:
为了使这篇文章简短,我将实际的源文件存储在 gists 中:
./src/main/kotlin/ThingService.kt
./src/main/resources/application.properties
使用这些文件,可以使用以下命令重现问题(在我的情况下是在 Ubuntu 16.04 上)。
下载并初始化 CockroachDB:
运行数据服务:
运行压力测试:
stress_test.py
同时向服务发送PUT
请求和GET
请求(按值查找)。大多数请求工作正常,但在输出之间看起来如下:
Spring 应用程序的日志显示了更多详细信息:
没有并发写入。所有写入都是严格顺序的。仅当并发读取起作用时才会出现此问题。但是我认为这不应该导致需要重试任何事务。我的数据库连接配置是否有问题,或者可能是什么问题?
hibernate - 休眠和使用数据库索引会在 CockroachDB 上创建 SQL 语法错误
以下使用带有 Spring Boot、Hibernate、JpaRepository、CockroachDB 和 Kotlin 的数据库索引的最小示例无法重新启动。
我还使用 PostgresSQL 而不是 CockroachDB 进行了测试,这很好。
但是对于 CockroachDB,它会以 SQL 语法错误结尾(请参阅本问题末尾的日志)。
这是重现问题的代码。
./src/main/kotlin/ThingService.kt
:
./src/main/resources/application.properties
:
./build.gradle.kts
:
以下是重现问题的步骤。
下载并初始化 CockroachDB:
运行数据服务:
现在让我们看一下数据库中生成的表:
输出:
然后
输出
然而运行
第二次不起作用。应用程序在启动时崩溃。
关于什么可能导致这个问题或如何解决它的任何想法?
hibernate - 休眠并在 CockroachDB 中使用 @GeneratedValue 会导致 SQLGrammarException
以下使用 Spring Boot、Hibernate、JpaRepository、CockroachDB 和 Kotlin 生成的 id 的最小示例生成一个org.hibernate.exception.SQLGrammarException
.
我还使用 PostgresSQL 而不是 CockroachDB 进行了测试,这很好。
这是重现问题的代码。
./src/main/kotlin/ThingService.kt
:
./src/main/resources/application.properties
:
./build.gradle.kts
:
以下是重现问题的步骤。
下载并初始化 CockroachDB:
运行数据服务:
现在尝试将东西放入服务中:
回应是:
但是,当使用 CockroachDB 的 PostgreSQL 插入时,结果很好
知道是什么导致了问题,或者在使用 CockroachDB 时如何避免它?
以下是完整的日志:
npgsql - 将 npgsql 与 CockroachDB 和 .Net Core 一起使用
我成功使用 npgsql (Npgsql.EntityFrameworkCore.PostgreSQL) 连接到 PostgreSQL 数据库。我听说同一个 EF 提供程序与 CockroachDB 配合得很好。我正在尝试使用它,但需要帮助来定义CockroachDB的连接字符串。对于 PostgreSQL,我使用了以下连接字符串:
如果我想将连接字符串连接到CockroachDB,有人知道连接字符串应该是什么样子吗?
cockroachdb - 如何构建集群以便在节点之间进行完整的数据复制?
我如何构建/配置一个 cockroach 集群以便在所有节点中拥有所有数据?我不是在谈论将数据片段分布在节点上。
我尝试使用位置标志启动一个集群,但是一旦我在第一次接收数据的机器中杀死 cockroach 进程,我就不再能够执行选择,并且该命令仅在我再次启动此实例时返回数据.
换句话说,我想实现一个场景,如果我总共有 3 个节点并且我丢失了其中 2 个或者它们变得不可用,我仍然想正常工作。
如果 cockroachdb 不支持此功能。实现它的最佳方法是什么?
sql - SQL - 无需全表扫描即可获取特定行
我正在使用 Postgresql (cockroachdb),我想选择一个特定的行。例如,有数千条记录,我想选择行号 999。
在这种情况下,我们将使用 LIMIT 和 OFFSET,SELECT * FROM table LIMIT 1 OFFSET 998;
但是,根据这篇文章,使用 LIMIT 和 OFFSET 可能会导致性能问题。所以我想知道是否有办法在没有全表扫描的情况下获取特定行。
我觉得这是可能的,因为数据库似乎按主键对数据进行排序,当我这样做时,SELECT * FROM table;
它总是显示排序结果。由于它是按主键排序的,数据库可以使用索引来访问特定的行,对吧?
jsonb - cockroachdb jsonb 选择查询
我在 CockroachDB v2.0-beta 中有一个简单的表:
我可以运行一个选择查询来查找 acct->properties 下的特定属性,如下所示:
有没有办法选择 Json blob 的子集,例如嵌套属性?这样的事情会有所帮助:
提前感谢您的任何提示!
干杯,〜g