Azure Cosmos DB for NoSQL Java SDK(旧版):发行说明和资源

适用范围: NoSQL

本文介绍适用于 API for NoSQL 的 Azure Cosmos DB Sync Java SDK v2。 此 API 仅支持同步操作。

重要

这不是最新的 Azure Cosmos DB Java SDK! 强烈建议对项目使用 Azure Cosmos DB Java SDK v4。 若要升级,请按照迁移到 Azure Cosmos DB Java SDK v4 指南和 Reactor 与 RxJava 指南中的说明进行操作。

警告

2024 年 2 月 29 日,Azure Cosmos DB Sync Java SDK v2.x 将停用。 停用后,Azure Cosmos DB 将不再为此 SDK 提供进一步的维护和支持。 请按照此处的说明迁移到 Azure Cosmos DB Java SDK v4。

链接
SDK 下载 Maven
API 文档 Java API 参考文档
参与 SDK GitHub
入门 Java SDK 入门
Web 应用教程 使用 Azure Cosmos DB 开发 Web 应用程序
受支持的最小运行时 Java 开发工具包 (JDK) 7+

发行说明

下面是 SDK 的每个版本的发行说明。

2.6.5

  • 由于安全漏洞,删除了测试依赖项 com.google.guava/guava
  • 已将依赖项 com.fasterxml.jackson.core/jackson-databind 升级到 2.14.0
  • 已将依赖项 commons-codec/commons-codec 升级到 1.15
  • 已将依赖项 org.json/json 升级到 20180130

2.6.4

  • 修复了读取超时的重试策略

2.6.3

  • 修复了当 GoneException 包装在 IllegalStateException 中时的重试策略 - 此更改是确保在出现 410 时刷新网关缓存所必需的,目的是使 Spark 连接器(适用于 Spark 2.4)可以使用自定义重试策略,这样查询才会在分区拆分期间成功

2.6.2

  • 添加了新的重试策略以在读取超时时重试
  • 已将依赖项 com.fasterxml.jackson.core/jackson-databind 升级到 2.9.10.8
  • 将依赖项 org.apache.httpcomponents/httpclient 升级到了 4.5.13

2.6.1

  • 修复了通过服务互操作处理查询时的 bug。

2.6.0

  • 添加了对从时间点查询更改源的支持。

2.5.1

  • 修复了 documentCollection 查询的主分区缓存问题。

2.5.0

  • 添加了对 449 重试自定义配置的支持。

2.4.7

  • 修复了连接池超时问题。
  • 修复了内部重试时的身份验证令牌刷新。

2.4.6

  • 更新了 databaseAccount 上正确的客户端副本策略标记,并从缓存中读取 databaseAccount 配置。

2.4.5

  • 如果用户提供 pkRangeId,则此版本避免重试无效的分区键范围错误

2.4.4

  • 优化了分区键范围缓存刷新。
  • 修复了以下问题:SDK 不接受来自服务器的分区拆分提示,导致客户端路由缓存刷新不正确。

2.4.2

  • 优化了集合缓存刷新。

2.4.1

  • 添加了对从请求诊断字符串检索内部异常消息的支持。

2.4.0

  • 在 PartitionKeyDefinition 上引入版本 API。

2.3.0

  • 为直接模式添加了单独的超时支持。

2.2.3

  • 使用服务的 Null 错误消息并生成文档客户端异常。

2.2.2

  • 套接字连接改进,添加 SoKeepAlive 默认值 true。

2.2.0

  • 添加了请求诊断字符串支持。

2.1.3

  • 修复了适用于哈希 V2 的 PartitionKey 中的 bug。

2.1.2

  • 添加了对组合索引的支持。
  • 修复了多区域终结点管理器中的 bug 以强制刷新。
  • 修复了直接模式下带有前提条件的更新插入操作的 bug。

2.1.1

  • 修复了网关地址缓存中的 bug。

2.1.0

  • 为直接模式添加了多区域写入支持。
  • 添加了对处理代理中作为 ServiceUnavailable 异常引发的 IOExceptions 的支持。
  • 修复了终结点发现重试策略中的 bug。
  • 修复了 bug,以确保 BaseDatabaseAccountConfigurationProvider 不会引发空指针异常。
  • 修复了 bug,以确保查询迭代器不会返回 Null 值。
  • 修复了 bug,以确保允许较大的 PartitionKey。

2.0.0

  • 为网关模式添加了多区域写入支持。

1.16.4

  • 修复了读取查询的分区键范围时的 bug。

1.16.3

  • 修复了在 DirectHttps 模式下设置继续标记标头大小时的 bug。

1.16.2

  • 添加了流式故障转移支持。
  • 添加了对自定义元数据的支持。
  • 改进了会话处理逻辑。
  • 修复了分区键范围缓存中的 bug。
  • 修复了直接模式下的 NullPointerException (NPE) bug。

1.16.1

  • 添加了对唯一索引的支持。
  • 在源选项中添加了对限制继续标记大小的支持。
  • 修复了 Json 序列化(时间戳)中的一个 bug。
  • 修复了 Json 序列化(枚举)中的一个 bug。
  • com.fasterxml.jackson.core:jackson-databind 的依赖项升级到了 2.9.5。

1.16.0

  • 改进了直接模式的连接池。
  • 改进了非 orderby 跨分区查询的预提取。
  • 改进了 UUID 生成。
  • 改进了会话一致性逻辑。
  • 添加了对多多边形的支持。
  • 添加了对集合的分区键范围统计信息的支持。
  • 修复了多区域支持方面的一个 bug。

1.15.0

1.14.0

  • 对 Microsoft 友元库进行了内部更改。

1.13.0

  • 修复了读取单个分区键范围的问题。
  • 修复了 ResourceID 分析中影响使用短名称的数据库的问题。
  • 修复了分区键编码导致的问题。

1.12.0

  • 关键 bug 修复,用于在分区拆分期间请求处理。
  • 解决了 Strong 和 BoundedStaleness 一致性级别存在的问题。

1.11.0

  • 添加了对称为“ConsistentPrefix”的新一致性级别的支持。
  • 修复了以会话模式读取集合时的 bug。

1.10.0

  • 启用了对吞吐量低至 2,500 RU/秒并且缩放增量为 100 RU/秒的分区集合的支持。
  • 修复了本机程序集中的 bug,该 bug 在某些查询中可能会导致 NullRef 异常。

1.9.6

  • 修复了查询引擎配置中可能会导致网关模式下查询异常的 Bug。
  • 修复了会话容器中的一些 Bug,这些 Bug 可能会在创建集合后立即导致“找不到所有者资源”请求异常。

1.9.5

  • 添加了对聚合查询(COUNT、MIN、MAX、SUM、AVG)的支持。
  • 添加了对更改源的支持。
  • 通过 RequestOptions.setPopulateQuotaInfo 添加了对集合配额信息的支持。
  • 通过 RequestOptions.setScriptLoggingEnabled 添加了对存储过程脚本日志记录的支持。
  • 修复了以下 bug:DirectHttps 模式中的查询在遇到限制失败时可能会停止响应。
  • 修复了会话一致性模式中的一个 Bug。
  • 修复了一个 bug,该 bug 可能会导致在请求率很高时,在 HttpContext 中出现 NullReferenceException。
  • 改进了 DirectHttps 模式的性能。

1.9.4

  • 使用 ConnectionPolicy.setProxy() API 添加了基于简单客户端实例的代理支持。
  • 添加了 DocumentClient.close() API 以正确关闭 DocumentClient 实例。
  • 通过从本机程序集(而非网关)派生查询计划,提高直接连接模式下的查询性能。
  • 设置 FAIL_ON_UNKNOWN_PROPERTIES = false,使用户无需在其普通旧 Java 对象 (POJO) 中定义 JsonIgnoreProperties。
  • 重构了日志记录以使用 SLF4J。
  • 修复了一致性读取器中的其他几个 Bug。

1.9.3

  • 修复了连接管理中的 bug,防止直接连接模式下的连接泄漏。
  • 修复了 TOP 查询中可能会引发 NullReference 异常的 bug。
  • 通过减少内部缓存的网络调用数提高了性能。
  • 在 DocumentClientException 中添加了状态代码、ActivityID 和请求 URI,以更好地进行故障排除。

1.9.2

  • 修复了连接管理中的问题,实现了更好的稳定性。

1.9.1

  • 添加了对 BoundedStaleness 一致性级别的支持。
  • 添加了对分区集合的 CRUD 操作的直接连接支持。
  • 修复了使用 SQL 查询数据库的一个 bug。
  • 修复了会话缓存中会话令牌设置可能不正确的 bug。

1.9.0

  • 添加了对跨分区并行查询的支持。
  • 添加了对分区集合的 TOP/ORDER BY 查询支持。
  • 添加了非常一致性支持。
  • 添加了使用直接连接时对基于名称的请求的支持。
  • 修复了 bug,使 ActivityId 在所有请求重试中保持一致。
  • 修复了在重新创建同名集合时与会话缓存相关的 bug。
  • 为地域隔离的空间查询指定集合索引策略时增加了多边形和 LineString 数据类型。
  • 解决 Java 文档中的 Java 1.8 的问题。

1.8.1

  • 修复了 PartitionKeyDefinitionMap 中的一个 bug,以便缓存单个分区集合,而不进行额外的提取分区键的请求。
  • 修复了一个 bug,以便在提供不正确的分区键值时不重试。

1.8.0

  • 添加了对多区域数据库帐户的支持。
  • 添加了对自动重试限制请求的支持,并提供了选项用于自定义最大重试次数和最大重试等待时间。 有关详细信息,请参阅 RetryOptions 和 ConnectionPolicy.getRetryOptions()。
  • 弃用了基于 IPartitionResolver 的自定义分区代码。 使用分区集合来提高存储和吞吐量。

1.7.1

  • 添加了对速率限制的重试策略支持。

1.7.0

  • 对文档添加了生存时间 (TTL) 支持。

1.6.0

1.5.1

  • 修复了 HashPartitionResolver 中的 Bug 以生成 little-endian 格式的哈希值,以便与其他软件开发工具包 (SDK) 保持一致。

1.5.0

  • 添加哈希和范围分区冲突解决程序以协助跨多个分区对应用程序进行分片。

1.4.0

  • 实现 Upsert。 添加了新的 upsertXXX 方法以支持 Upsert 功能。
  • 实现基于 ID 的路由。 无公共 API 更改,全部均为内部更改。

1.3.0

  • 跳过了发布以使版本号与其他 SDK 符合

1.2.0

  • 支持地理空间索引。
  • 验证所有资源的 ID 属性。 资源的 ID 不能包含 ?/#\ 字符或以空格结尾。
  • 将新标头“索引转换进度”添加到 ResourceResponse。

1.1.0

  • 实现 V2 索引策略

1.0.0

  • GA SDK

发布日期和停用日期

Azure 会在停用 SDK 时至少提前 12 个月发出通知,以便用户顺利转换为更高版本/受支持版本。 新特性、功能和优化仅添加到最新的 SDK 中。 建议始终尽早升级到最新的 SDK 版本。

警告

在 2020 年 5 月 30 日之后,Azure Cosmos DB 将不再进行 bug 修复,不再添加新功能,也不再支持 1.x 版的适用于 API for NoSQL 的 Azure Cosmos DB Java SDK。 如果你不想升级,则从 1.x 版 SDK 发送的请求将继续由 Azure Cosmos DB 服务处理。

在 2016 年 2 月 29 日之后,Azure Cosmos DB 将不再进行 bug 修复,不再添加新功能,也不再支持 0.x 版的用于 NoSQL API 的 Azure Cosmos DB Java SDK。 如果你不想升级,则从 0.x 版 SDK 发送的请求将继续由 Azure Cosmos DB 服务处理。

版本 发布日期 停用日期
2.6.1 2020 年 12 月 17 日 2024 年 2 月 29 日
2.6.0 2020 年 7 月 16 日 2024 年 2 月 29 日
2.5.1 2020 年 6 月 3 日 2024 年 2 月 29 日
2.5.0 2020 年 5 月 12 日 2024 年 2 月 29 日
2.4.7 2020 年 2 月 20 日 2024 年 2 月 29 日
2.4.6 2020 年 1 月 24 日 2024 年 2 月 29 日
2.4.5 2019 年 11 月 10 日 2024 年 2 月 29 日
2.4.4 2019 年 10 月 24 日 2024 年 2 月 29 日
2.4.2 2019 年 9 月 26 日 2024 年 2 月 29 日
2.4.1 2019 年 7 月 18 日 2024 年 2 月 29 日
2.4.0 2019 年 5 月 04 日 2024 年 2 月 29 日
2.3.0 2019 年 4 月 24 日 2024 年 2 月 29 日
2.2.3 2019 年 4 月 16 日 2024 年 2 月 29 日
2.2.2 2019 年 4 月 05 日 2024 年 2 月 29 日
2.2.0 2019 年 3 月 27 日 2024 年 2 月 29 日
2.1.3 2019 年 3 月 13 日 2024 年 2 月 29 日
2.1.2 2019 年 3 月 09 日 2024 年 2 月 29 日
2.1.1 2018 年 12 月 13 日 2024 年 2 月 29 日
2.1.0 2018 年 11 月 20 日 2024 年 2 月 29 日
2.0.0 2018 年 9 月 21 日 2024 年 2 月 29 日
1.16.4 2018 年 9 月 10 日 2020 年 5 月 30 日
1.16.3 2018 年 9 月 9 日 2020 年 5 月 30 日
1.16.2 2018 年 6 月 29日 2020 年 5 月 30 日
1.16.1 2018 年 5 月 16日 2020 年 5 月 30 日
1.16.0 2018 年 3 月 15 日 2020 年 5 月 30 日
1.15.0 2017 年 11 月 14 日 2020 年 5 月 30 日
1.14.0 2017 年 10 月 28日 2020 年 5 月 30 日
1.13.0 2017 年 8 月25 日 2020 年 5 月 30 日
1.12.0 2017 年 7 月 11 日 2020 年 5 月 30 日
1.11.0 2017 年 5 月 10 日 2020 年 5 月 30 日
1.10.0 2017 年 3 月 11 日 2020 年 5 月 30 日
1.9.6 2017 年 2 月 21 日 2020 年 5 月 30 日
1.9.5 2017 年 1 月 31 日 2020 年 5 月 30 日
1.9.4 2016 年 11 月 24 日 2020 年 5 月 30 日
1.9.3 2016 年 10 月 30 日 2020 年 5 月 30 日
1.9.2 2016 年 10 月 28 日 2020 年 5 月 30 日
1.9.1 2016 年 10 月 26 日 2020 年 5 月 30 日
1.9.0 2016 年 10 月 3 日 2020 年 5 月 30 日
1.8.1 2016 年 6 月 30 日 2020 年 5 月 30 日
1.8.0 2016 年 6 月 14 日 2020 年 5 月 30 日
1.7.1 2016 年 4 月 30 日 2020 年 5 月 30 日
1.7.0 2016 年 4 月 27 日 2020 年 5 月 30 日
1.6.0 2016 年 3 月 29 日 2020 年 5 月 30 日
1.5.1 2015 年 12 月 31 日 2020 年 5 月 30 日
1.5.0 2015 年 12 月 4 日 2020 年 5 月 30 日
1.4.0 2015 年 10 月 5 日 2020 年 5 月 30 日
1.3.0 2015 年 10 月 5 日 2020 年 5 月 30 日
1.2.0 2015 年 8 月 5 日 2020 年 5 月 30 日
1.1.0 2015 年 7 月 9 日 2020 年 5 月 30 日
1.0.1 2015 年 5 月 12 日 2020 年 5 月 30 日
1.0.0 2015 年 4 月 7 日 2020 年 5 月 30 日
0.9.5-prelease 2015 年 3 月 9 日 2016 年 2 月 29 日
0.9.4-prelease 2015 年 2 月 17 日 2016 年 2 月 29 日
0.9.3-prelease 2015 年 1 月 13 日 2016 年 2 月 29 日
0.9.2-prelease 2014 年 12 月 19 日 2016 年 2 月 29 日
0.9.1-prelease 2014 年 12 月 19 日 2016 年 2 月 29 日
0.9.0-prelease 2014 年 12 月 10 日 2016 年 2 月 29 日

常见问题

如何收到即将停用的 SDK 的通知?

Azure 会在即将停用的 SDK 的支持结束之前提前 12 个月进行通知,以便协助平稳地转换到支持的 SDK。 我们会通过以下通信通道通知你:Azure 门户、Azure 更新以及与分配的服务管理员的直接通信。

在这 12 个月期间,我是否可以使用即将停用的 Azure Cosmos DB SDK 来创作应用程序?

可以,你可以在 12 个月的宽限期内使用即将停用的 Azure Cosmos DB SDK 创作、部署和修改应用程序。 建议在 12 个月的宽限期内根据相应情况迁移到支持的较新版本 Azure Cosmos DB SDK。

停用日期之后,使用不受支持的 Azure Cosmos DB SDK 的应用程序会发生什么情况?

停用日期之后,Azure Cosmos DB 将不再进行 bug 修复、添加新功能或为已停用的 SDK 版本提供支持。 如果不想升级,从已停用的 SDK 版本发送的请求将继续由 Azure Cosmos DB 服务提供服务。

哪些 SDK 版本将包含最新功能和更新?

新功能和更新将仅添加到最新的受支持的主要 SDK 版本的最新次要版本。 建议始终使用最新版本,以充分利用新功能、性能改进和 bug 修补程序。 如果使用的是未停用的旧版本 SDK,则对 Azure Cosmos DB 进行的请求仍然有效,但是你无法访问任何新功能。

如果无法在截止日期之前更新应用程序,该怎么办?

我们建议尽早升级到最新 SDK。 SDK 标记为要停用之后,你将有 12 个月的时间来更新应用程序。 如果无法在停用日期之前更新,从已停用的 SDK 版本发送的请求将继续由 Azure Cosmos DB 提供服务,因此正在运行的应用程序将继续运行。 但 Azure Cosmos DB 将不再进行 bug 修复、添加新功能或为已停用的 SDK 版本提供支持。

如果你有支持计划并需要技术支持,请创建支持工单以联系我们

如何请求将功能添加到 SDK 或连接器?

新功能并不总是立即添加到每个 SDK 或连接器中。 如果你想添加的功能不受支持,请在我们的社区论坛提出反馈。