Лучший способ поддержать остаток на счете клиента

Как насчет toLocaleTimeString()?

var date = new Date('Sat, 19 Jan 2019 05:40:07 GMT'); 
console.log(date.toLocaleTimeString('en-US', {timeZone: 'UTC', hour12: false}));

Если вы хотите полностью избежать объекта Date, вы можете просто разберите строку:

var date = 'Sat, 19 Jan 2019 05:40:07 GMT'
var timeRegex = /(\d\d):(\d\d):(\d\d)/
console.log(timeRegex.exec(date)[0])

6
задан tloach 10 October 2008 в 10:23
поделиться

8 ответов

Для производительности я сказал бы обоих. Сохраните журнал всех транзакций (в отдельной таблице), но поддержите поле в клиентской записи, которая хранит текущий баланс, который обновляется, когда Вы добавляете больше транзакций.

8
ответ дан 8 December 2019 в 04:32
поделиться

Один проект я продолжил работать, мы сохранили текущий баланс в одном поле и все транзакции на другой таблице, но из-за важного уровня, который этот проект имел на данных, являющихся идеальными 100% (или лучше) или время, мы также сохранили хеш баланса в другом поле, и хеш был сравнен каждый раз, когда это назвали для обеспечения целостности, это, если не совпадал, это было повторно вычислено от таблицы транзакций и перехешировано затем отправленное отделу поддержки клиентов для обзора.

7
ответ дан 8 December 2019 в 04:32
поделиться

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

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

3
ответ дан 8 December 2019 в 04:32
поделиться

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

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

2
ответ дан 8 December 2019 в 04:32
поделиться

"Это зависит". Чаще всего Вы хотите избежать производных данных. Однако существуют случаи, где наличие полученного общего количества выравнивается по ширине.

Рассматриваемый вопрос:

Я работал над приложением базы данных кредита, где баланс состоял из многих разных вещей и различных бизнес-правил со временем. Например, "баланс" был на самом деле суммой различных балансов от различных блоков, таких как Принципал, Сборы, и т.д.

Поскольку транзакции были отправлены, они были выделены различным блокам согласно бизнес-правилам. Сборы перешли к блоку сборов. Покупки, кредиты и дебеты перешли к основному блоку. Эти выделения и правила были подвержены изменениям со временем.

Предположите запрашивать 100 000 клиентских балансов на лету перед лицом изменения бизнес-правил со временем. Это - твердый случай, где наличие полученного значения на самом деле имеет смысл. Мы поддержали ряд алгоритмов, чтобы "перемотать" учетную запись и восстановить баланс хронологически в целях аудита и проверки, но это было ничто, что Вы захотите сделать для больших наборов.

3
ответ дан 8 December 2019 в 04:32
поделиться

Все здесь правы. Это действительно зависит. Но у Вас может быть лучший из обоих миров при помощи представления. Кажется, что у Вас могла бы быть довольно маленькая система, и динамично вычисление баланса будет самой легкой вещью сделать. Для хранения этого простым, я определил бы единственное представление, которое имеет данные аккаунта, которые Вы хотите (вычисленный динамично).

Если бы Вы испытываете необходимость в большем количестве производительности, чем которая, я настроил бы основанную на триггере систему для обновления баланса к основной таблице учетной записи, затем обновить представление негласно, таким образом, Вы не должны изменять никакой другой код. Просто удостоверьтесь, что Вы используете правильный режим изоляции базы данных или для запроса, или Вы будете в беде!;-)

2
ответ дан 8 December 2019 в 04:32
поделиться

Это было бы функцией того, как часто необходимо получить доступ к этой информации. Если бы время от времени, то я сказал бы что разрешение и повторно вычислил бы его.

0
ответ дан 8 December 2019 в 04:32
поделиться

Используйте представления и запросы - Вы были бы удивлены тем, как быстро это будет работать.

0
ответ дан 8 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

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