postgresql - 在 PostgreSQL 中存储任意精度整数

标签 postgresql gmp arbitrary-precision cryptocurrency

我有一个应用程序需要将加密货币值存储到 PostgreSQL 数据库。该应用程序使用任意精度整数,我必须将这些整数存储到数据库中。最有效的方法是什么?

为什么要任意精度?有两个原因:

  1. 为了安全。永远不会溢出。
  2. 必要时。比如以太坊内部默认使用uint256,1 Ether = 10^18 wei。因此,如果要寻求准确性(确实如此),交易将需要存储大量数字。

我想到的最佳解决方案是将数字转换为 blob 并将数字以原始格式存储为位。但我希望有更好的方法更适合数据库。

编辑:

我需要这种存储方法更好的原因是性能。我不想进入基准测试和所有这些细节。这就是为什么我让问题保持简单,否则它会变得复杂。所以问题是是否有合适的方法来做到这一点。

最佳答案

看看 documentation .

如果您需要效率但也依赖于准确的值(我同意这一点),那么您真的应该使用 decimal(precision, scale) 预先定义具有特定预设的列或不同的表。

如果您的测试表明标准数据类型的性能不够好,您可能想看看 bignum也许还有其他人。

关于postgresql - 在 PostgreSQL 中存储任意精度整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55306788/

相关文章:

haskell - 使用 LLVM(来自 Haskell)的大数算术

c - 尝试将GNU GMP库中的类型用作Bison的yylval类型时出错

python - Tortoise ORM for Python 没有返回实体的关系(Pyndantic,FastAPI)

c++ - 如何在 visual studio 上为 C++ 安装 MPFR 和 GMP

java - BigInteger 算法内部如何工作(Java)?

java - 寻找快速方法将格雷码中的 boolean[] 转换为 Java 中的 BigInteger,反之亦然

python - Python 中的 BBP 算法 - 使用任意精度算术

django - 确保用户输入整数

sql - 函数参数anyelement,PostgreSQL bug?

postgresql - 选择按日期排序的唯一记录