【问题标题】:Aerospike: Migrating from Python client to Go clientAerospike:从 Python 客户端迁移到 Go 客户端
【发布时间】:2016-03-20 11:55:20
【问题描述】:

我从 3.4 开始使用 Aerospike 和 Python 客户端 1.0.31。 目前已升级到 Aerospike 3.6.3 和 Python 客户端 1.0.50。

由于 Python 客户端没有异步写入功能,我打算使用 Golang。另请阅读 Go 非常适合 Aerospike (http://www.aerospike.com/blog/go-aerospike-a-perfect-match/)

我想知道我在更换客户时会面临什么后果以及如何处理它们。

我看到的一个问题是序列化。由于我从 Aerospike 3.4 开始使用 python 客户端,如何处理较旧的序列化数据,如浮点值。我不必担心新数据,因为最近的版本原生支持浮点数。

提前致谢。

【问题讨论】:

    标签: aerospike


    【解决方案1】:

    嗯,“Python 客户端没有 Async”需要伴随一个大的。 C 客户端 4.0.0 提供异步操作。当前在 Python 客户端中完成的工作与 Python >= 3.4 兼容。异步是计划好的。

    从一种语言客户端迁移到另一种语言客户端或组合不同的 SDK 时要考虑的主要问题是如何处理“不受支持”的类型。您必须检查您的数据在哪里包含 as_bytes 中的序列化数据,编码为 AS_BYTES_PYTHON。请参阅Python API doc 中的“序列化”部分。您想提出一个通用的自定义序列化方案来允许您的 Go 客户端读取该数据。

    【讨论】:

    • 感谢您的有用回复。我认为最近的 aerospike 版本本身支持浮点/双精度值。如果我自己进行反序列化,那么我可能会错过核心功能。我在想如何迁移这些用 Aerospike 兼容值重写的现有浮点数,这样如果我从 python 客户端迁移,我不需要在 Go 客户端进行任何更改。有什么想法吗?
    • 序列化/反序列化仅适用于不支持的类型,因此不会触及浮点数。它可以处理诸如布尔值之类的事情。除了常见的数据问题外,没有大的变化。显然,Go 是一种非常不同的语言,从概念上讲,您希望让一个客户端代表您处理所有请求,但这类似于您在大多数 Python 框架中使用 Python 客户端的方式。
    • @Ronen,谢谢 Ronen。我迫切需要转到 Go 的唯一需要是,我无法进行异步写入。
    • 嗯,大约一周后,您将能够使用可以执行多线程工作的 Python 3 兼容客户端。您可以将其插入到 gevent 之类的异步框架中。实际的多线程功能将随之而来。但你需要考虑自己的时机。
    猜你喜欢
    • 2023-03-24
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 2018-07-01
    • 2016-08-31
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多