繁体   English   中英

在关系数据库中存储多达 78 位数字

[英]Storing up to 78 digits in a relational database

SQL 服务器这样的数据库允许存储多达 38 位数字。

对于某些用例,例如加密货币数字存储,此数量是不够的。 以 ETH 为例。 ETH 的值声明为 uint256。 这代表最多 78 位数字。

我见过的避免四舍五入和丢失准确性的唯一解决方案是将加密货币/代币的数量存储为字符串。

这是非常不切实际的,因为您不能像 SUM() 那样在 SQL 中进行操作。

那里必须有其他解决方法。

类似的问题被问到存储 ETH 精度加密货币小数

两种解决方案

  • PostgreSQL 可以愉快地存储多达 78 位数字 请切换到更好的数据库。 PostgreSQL 离 MSSQL 不是很远。 因此,您对“数据库”的评论是不正确的,它只是一些数据库。

  • 将您的数据存储为 32 字节二进制 blobs BINARY(32)并在应用程序级别将数字转换为小数。 这比字符串更有效。 但是,您仍然需要在应用程序级别执行SUM()或在数据库级别执行脚本。 切换到更好的数据库要容易得多。

我想出的一种解决方案是将数字划分为不同的列,然后对每一列进行必要的操作。 后来总结了所有的列。

这个解决方案并不完美,因为数据库无论如何都不会存储 78 位数字,但让我更接近真实数字

将数字存储在字符串中,然后将字符串转换为数字格式并不理想,我会失去每行的小数精度。

没有一个解决方案会给我真正准确的数字,但是通过将数字除以列,我失去的准确性会降低。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM