170 похожих чатов

Всем привет! Кто шарит за хранение валют в БД -

хочу посоветоваться
Есть сущность Баланс. Есть сущность Валюта => храним на балансах валюты - криптовалюту, рублевую и т.п.
У криптовалюты максимально 18 знаков после запятой, у рублевой 2.
Как лучше хранить большие числа?
В истинном человеческом формате longText типа 0.00000000008 BTC и 18.45 RUB
Или ВСЮ валюту хранить строкой типа 8 * 10^18 и 1845 * 10^16

15 ответов

24 просмотра

https://dev.mysql.com/doc/refman/8.0/en/fixed-point-types.html

L-K Автор вопроса

Не longText, а decimal По хорошему интом, но я так понимаю BTС интом особо не похранишь, хотя может в bigint влезет.

L-K Автор вопроса
L K
в bigint не влезет

Самая большая на дробную часть все равно btc будет, остальные 2 знака, а некоторые и вообще без знака, например UZS

храни строкой, а вычисления производи через bcmath

L-K Автор вопроса
Daniil Zobov
храни строкой, а вычисления производи через bcmath

Аргументы против Строка занимает 20 байт, а числом 19 бит Не работают индексы

L-K Автор вопроса
Daniil Zobov
храни строкой, а вычисления производи через bcmath

Аргументы за : Проще внедрить в систему

L K
Аргументы против Строка занимает 20 байт, а числом...

1) наберешь ли ты данных хотя бы мегабайт, чтобы это хоть какой-то эффект дало кроме гомеопатического? 2) зачем индесы на баланс? не особо понимаю кейсы, когда это может пригодиться за исключением одного - показать все счета с количеством денег >= (<=) чем что-то

L-K Автор вопроса
Daniil Zobov
1) наберешь ли ты данных хотя бы мегабайт, чтобы э...

На стрингах default не поставишь... В коде придется устанавливать... Хотя это не проблема

L-K Автор вопроса
Daniil Zobov
1) наберешь ли ты данных хотя бы мегабайт, чтобы э...

Вообще там не только балансы будут а транзакции

L K
Аргументы против Строка занимает 20 байт, а числом...

Индексы не аргумент, т.к. колонку с балансом врядли ты будешь индекстровать. А вот то что агрегирующие функции не будут работать с строкой может и боль. А decimal разве не потянет btc? Это же внутренний формат базы данных и там может быть и влезет.

L K
Вообще там не только балансы будут а транзакции

а при чем тут транзакция и индекс?

L-K Автор вопроса
Daniil Zobov
а при чем тут транзакция и индекс?

транзакция как сущность - в смысле операция финансовая а не транзакция БД

L-K Автор вопроса
Egor Gruzdev
Индексы не аргумент, т.к. колонку с балансом врядл...

Decimal - то потянет, если хранить дробную часть. Прошлый разработчик был против дробной части в БД и поэтому сделал все на целочисленных int с коэфф (сколько знаков забрать на запятую) сейчас мы уперлись в слишком низкий потолок знаков

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем доброго дня! Подскажите может кто использовал связку Pagebuilder + Clientsetting. Сами параметры с типом pagebuilder в модуле Clientsetting работают нормально, можно такж...
Александр Добриков
12
А почему в си некоторые вещи работают с двойными кавычками некоторые с одинарными? Нельзя было все сделать с одними или чтоб работало с разными? например чтоб выводить строки ...
.
15
Всем привет! Нужен совет от опытных. Переношу свой проект с Делфи 10.2 Токио на Лазарус 3.2 установленный через инсталлятор fpcupdeluxe-x86_64-win64. При импортировании проект...
Дмитрий Завгородний
7
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Good afternoon, I just started learning php in conjunction with mysql. I am registering a system on a local Mamp server using phpMyAdmin. It seems to be stored normally in the...
ManGo
1
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Добрый день! Такая проблема возникла, написал код на Python, который компилирует, собирает и запускает файлы .s А в случае работы нужно то же самое делать для .asm Чем эти фа...
A Mori
5
Всем привет! procedure TForm1.FormCreate(Sender: TObject); type TStartEnd = record S: Byte; E: Byte; end; var a, b: TStartEnd; begin {1} a.S := 1; {2} a.E := 2; ...
Руслан Михайлович
10
Карта сайта