Хранить произвольное число точности в PostgreSQL - PullRequest
1 голос
/ 22 марта 2019

У меня есть приложение, которое должно хранить значения криптовалюты в базе данных PostgreSQL. Приложение использует произвольные целые числа точности, и те, которые я должен сохранить в базе данных. Какой самый эффективный способ сделать это?

Почему произвольная точность? По двум причинам:

  1. Для безопасности. Не должно быть переполнения.
  2. По необходимости. Например, Ethereum по умолчанию использует uint256 для внутреннего использования, а 1 Ether = 10 ^ 18 wei. Таким образом, транзакции будут иметь гигантское количество цифр, которые должны быть сохранены, если требуется точность (что это такое).

Лучшее решение, которое я придумал, - преобразовать число в большой двоичный объект и сохранить число в виде битов в необработанном формате. Но я надеюсь, что есть лучший способ для базы данных.

РЕДАКТИРОВАТЬ:

Причиной, по которой мне нужен этот метод для лучшего хранения, является производительность. Я не хочу вдаваться в критерии и все эти детали. Вот почему я держу вопрос простым, иначе он усложнится. Поэтому вопрос в том, есть ли правильный способ сделать это.

1 Ответ

0 голосов
/ 23 марта 2019

Ознакомьтесь с документацией .

Если вам нужна эффективность, но вы также зависите от точных значений (с которыми я бы согласился), тогда вам действительно следует заранее определить столбцы или другие таблицы с конкретными предустановками, используя decimal(precision, scale).

Если ваши тесты показывают, что стандартные типы данных работают недостаточно хорошо, вы можете взглянуть на bignum и, возможно, на другие.

...