在PostgreSQL中存储任意精度整数

时间:2019-03-22 19:42:33

标签: postgresql gmp arbitrary-precision cryptocurrency

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

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

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

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

编辑:

之所以需要这种存储方法,是为了提高性能。我不想涉及基准和所有这些细节。这就是为什么我将问题简单化,否则它将变得复杂。所以问题是,是否有适当的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

看看documentation

如果您需要效率,但还取决于准确的值(我同意),那么您确实应该使用decimal(precision, scale)用特定的预设来预定义列或不同的表。

如果您的测试表明标准数据类型的性能不足,则可能需要查看bignum以及其他一些数据。

相关问题