Страница 1 из 4

BIGINT

Добавлено: 16 сен 2013, 19:33
Garch
Как работать с таким типом данных в БД?
Создал таблицу, там где просили указать тип - указал BIGINT, так как INT мне мало.
Но когда счет доходит до максимума INT`а, счет начинается заново(из самого минимального значения INT).
В общем он как бы принимает BIGINT за простой INT, может с бигинтом надо как то по особенному общаться?

Re: BIGINT

Добавлено: 16 сен 2013, 20:05
Serge
Это насколько же большие числа? Может имеет смысл их в строках хранить?

Re: BIGINT

Добавлено: 16 сен 2013, 20:55
Garch
Ну смотрите
Есть число, и каждую секунду к нему прибовляется пара миллиончиков единиц, 3.000.000 к примеру
Каждые 5 сек это все идет в базу
Соответственно число очень большое, в разы больше простого инта))

Как их в строках хранить, не подскажите? :)

Re: BIGINT

Добавлено: 16 сен 2013, 23:56
Casperovskii
Написать свой обработчик для складывания в столбик по разрядам же. Был бы с компа - пояснил. Т.е. тебе нужно строку твою разбить на символы и посимвольно складывать, как в школе (переводя символы в числа, естественно и если число стало двуразрядное (больше 9), то разбивать его на два однозначных и первый знак прибавлять к следующему разряду).

Re: BIGINT

Добавлено: 17 сен 2013, 05:26
Serge
Ага, все верно.
Пишется свой класс для работы с числами, которые представляют числа, в котором банально перегружаются необходимые арифметические операции.

Ну и может стоит задуматься над оптимизацией? К примеру, хранить в базе число пропорциональное исходному, а не само исходное. С Бигинтом работать тоже самое, что и с интом, только вопрос в скорости обработки таких данных и объеме базы

Re: BIGINT

Добавлено: 17 сен 2013, 16:29
Garch
Я не совсем понял про хранение в разрядах, не могли бы рассказать подробнее, пожалуйста? :)

Re: BIGINT

Добавлено: 17 сен 2013, 21:05
Serge
Garch
ну если у вас все числа, к примеру, заканчиваются на 000 - то зачем хранить эти лишние 000?
Если не понятка в этом... А если про перегрузку арифметики - то числа хранить можно в строках и писать сложение. К примеру:

127 + 45 = 127 + 045 = 1 + 0 _ 2 + 4 _ 7 + 5 = 1 _ 6 + 1(единиц больше десяти в сумме) _ 2

Re: BIGINT

Добавлено: 17 сен 2013, 21:23
Garch
Так если числа можно хранить в строках, можно просто большое число сохранять как строку? Ничего не раскладывая ничего? Арифметика вся происходит на стороне клиента же все равно, отправляется в базу уже готовое число

Re: BIGINT

Добавлено: 17 сен 2013, 21:35
IndieGD
Garch, можно

Re: BIGINT

Добавлено: 17 сен 2013, 21:39
Garch
А максимум какой то будет?
Оно будет точно нормально работать?
Не зверски много памяти занимать?