Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
Как то тестировал я подобное: одновременный перевод денег по зарплатной программе. Так вот на моём домашнем компе, где я развернул и базу и приложение я дошёл до сотни запросов в секунду на обычных таблицах с IDENTITY. А ТС предпологает, что у него может быть когда-нибудь будет 278 запросов в секунду. ИМХО в первую очередь затык будет на стороне приложения, а не БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:40 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenford, на чём кстати клиента БД писать будете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:40 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
alexeyvgДа это понятно, что могут быть пики. Я просто призываю стараться максимально корректно рассчитывать реальную нагрузку, в т.ч. пиковую. Что бы нагрузка составила 100 тыщ транзакций в секунду, нужно, что бы в обед 10 миллионов человек подошли к миллиону терминалов и совершили операции. Вы будете бслуживать миллион терминалов на старте? Тогда ок, ваши расчёты правильные. что-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10. alexeyvgВот именно, нужно сравнить. Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись. Я так сразу не могу сказать, что эффективнее, но на мой взгляд эффективнее хранить баланс, особенно при удлинении истории хранения. Насчёт баги - ну, писать надо правильно. Это ведь очень простая логика, её вполне реально надёжно, это ведь один оператор апдэйта в триггере. нет, в триггере точно никакой логики не будет. Правильно код без багов конечно очень хорошая цель, но недостижимая, поэтому первым делом надо сводить к минимуму саму возможность его допустить, а не декларировать такие цели и потом искать и наказывать виновных. Соответственно что способен сделать сам сервер - он сам и должен делать. Далеко не факт что вьюшка пересчитывает весь обьем строк, она вполне может оптимизированна для таких случаев, а даже если сейчас нет - то может в будущем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:49 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenford, авторчто-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10. вы бухгалтер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:52 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
skyANAstenford, на чём кстати клиента БД писать будете? клиент либо будет типа вебсервиса вызываемого самим банком, либо какой-то сервис будет который слушает tcp-ip соединения шлюза. Это еще не решено ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:53 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordчто-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10. А Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:54 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordskyANAstenford, на чём кстати клиента БД писать будете? клиент либо будет типа вебсервиса вызываемого самим банком, либо какой-то сервис будет который слушает tcp-ip соединения шлюза. Это еще не решено Вот надо бы решить, коль Вы собрались обеспечивать 100 тыс. запросов в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:55 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
skyANAА Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :) это отдельный вопрос, не относящийся к таблицам базы данных) Решатся тоже будет отдельно какой-нибудь вебфермой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 09:57 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordskyANAА Вы уже подумали о том, что до базы дело в этом случае и не дойдёт, очередь образуется на веб-сервере или последний вообще приляжет :) это отдельный вопрос, не относящийся к таблицам базы данных) Решатся тоже будет отдельно какой-нибудь вебфермой Я намекаю Вам на то, что Вы не на то тратите время. C вашими 278 вставок в секунду БД легко справится на обычных таблицах с IDENTITY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:05 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
alexeyvgВот именно, нужно сравнить. Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись. Ненене! "Вот так у нас все олени и кончились!"(С) Это убьет всю производительность на корню, и при некоторой удаче можно еще натрахаться с локами-дедлоками по самое небалуйся. Наверное, всё же схема "Горячая таблица" без индексов (ну, в разумном понимании слова "без") - "Холодная таблица" со всевозможными индексами и предрассчитанными агрегатами, пополняемая из горячей таблицы в периоды минимальной активности потребителей - наше всё. Знаете, а я б еще и горячую таблицу на секции бы порезал. По часам, или по минутам, например. Уж больно идея удалять данные в горячей таблице просто переключением метаданных привлекает. Правда, не совсем понятно, как тогда холодную таблицу формировать, если у нее секции будут шире (ну, если ее тоже по времени порезать). С другой стороны, если, например, количество транзакций за день - небольшое, ну миллион - 10 миллионов, то, наверное, можно и не париться. Порезать холодную таблицу по количеству опердней, ну, пусть 365, а в оперативной - держать две секции: До/После времени закрытия опердня. И по процедуре закрытия опердня формировать из секции "До" горячей таблицы данные для секции, соответствующей конкретному опердню холодной таблицы, уже со всеми индексами, индексированными вью, таблицами предрассчитанных агрегатов, свистелками и перделками. Понятно, что в отдельную табличку/таблички, рядом с холодной. А потом одномоментно выносить переключением метаданных секцию "ДО" из горячей таблицы и включать подготовленные данные в холодную. Причем холодную таблицу - можно и на соседнем сервере держать, проблем то... Ну, понятно, еще сверххолодная таблица понадобиться, из одних агрегатов за передыдущие годы... Т.е. это классическая схема "хранилище - оперативные данные", только отказ в обслуживании на момент пополнения хранилища недопустим, а так - никаких чудес. Всё ИМХО, разумеется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:13 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
uaggster, авторУж больно идея удалять данные в горячей таблице просто переключением метаданных привлекает. действительно, это жутко необходимый функционал для транзакций... 2-30млн в сутки вообще не требуют никаких особых приседаний. Годовые таблицы, для спихивания подальше. это то что вижу, а так да можно придумывать сколько угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 10:25 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordalexeyvgДа это понятно, что могут быть пики. Я просто призываю стараться максимально корректно рассчитывать реальную нагрузку, в т.ч. пиковую. Что бы нагрузка составила 100 тыщ транзакций в секунду, нужно, что бы в обед 10 миллионов человек подошли к миллиону терминалов и совершили операции. Вы будете обслуживать миллион терминалов на старте? Тогда ок, ваши расчёты правильные. что-бы нагрузка составила 100 тысяч в секунду, надо что-бы 100 тысяч человек произвели ее в эту самую секунду. В результате половина из них получит отклик не в 2 секунды, а в 10.Не, такого точно не будет. Всё распределяется равномерно, жизнь не дискретна. От миллиона терминалов транзакции будут распределяться очень, очень равномерно. Неравномерность возможна только в том случае, если кто то буферизирует этот миллион транзакций, накопит их за 10 секунд, а потом плюнет в вас. Но тогда латентность создаёте не вы, и вся система в целом нормально работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:14 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
"Для скорости" существуют нереляционные/нетранзакционые СУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:16 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
uaggsteralexeyvgВот именно, нужно сравнить. Вьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись. Ненене! "Вот так у нас все олени и кончились!"(С) Это убьет всю производительность на корню, и при некоторой удаче можно еще натрахаться с локами-дедлоками по самое небалуйся.Почему убьёт? Данных же будет читаться меньше, а писаться столько же, по сравнению с мат-вьюхой. Дедлоками придётся управлять, да. Впрочем, можно, конечно, и без триггеров, и соответственно не апдэйтить итог в той же транзакции, но это очень сильно поднимает требования к качеству кода и архитектуре. uaggsterС другой стороны, если, например, количество транзакций за день - небольшое, ну миллион - 10 миллионов, то, наверное, можно и не париться. Порезать холодную таблицу по количеству опердней, ну, пусть 365, а в оперативной - держать две секции:С миллионом непонятно зачем вообще париться с секциями, "порезать" и т.д.? Но ТС говорит про стотыщ в секунду, то есть 8 миллиардов 640 миллионов в сутки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:22 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов"Для скорости" существуют нереляционные/нетранзакционые СУБД.Да, отличный выбор для финансовой системы :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:23 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
alexeyvgВладислав Колосов"Для скорости" существуют нереляционные/нетранзакционые СУБД.Да, отличный выбор для финансовой системы :-) Так выбор зависит от контекста задачи, который автор тщательно скрывает :) Ему шашечки или ехать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:30 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordнет, в триггере точно никакой логики не будет. Правильно код без багов конечно очень хорошая цель, но недостижимая, поэтому первым делом надо сводить к минимуму саму возможность его допустить, а не декларировать такие цели и потом искать и наказывать виновных. Соответственно что способен сделать сам сервер - он сам и должен делать. Далеко не факт что вьюшка пересчитывает весь обьем строк, она вполне может оптимизированна для таких случаев, а даже если сейчас нет - то может в будущем.И вообще, непонятна концентрация на "таблице транзакций". На каждую "транзакцию" будет создаваться десятки связанных записей, на разных этапах обработки, под управлением разных сервисов, с некоторыми расчётами, с соблюдением целостности и т.д., т.к. у вас же не аналитическая система, а обработка платежей. Поэтому повторю своё ИМХО - решение проблем масштабирования нужно закладывать архитектурно в виде распределения компонентов системы. Что, конечно, не исключает оптимального написания кода и оптимальной модели данных внутри узла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:31 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
Для меня его способ решения приема платежей вовсе не очевиден, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 11:32 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
Тут уже предлагали In Memory. Не вижу причин, почему нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:01 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
Подозреваю, что автор хочет обеспечить логическую транзакционнность с внешними системами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:04 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
alexeyvgВьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.Не всю. Пересчитывается дельтами только по затронутым строкам. Именно поэтому в индексированных представлениях недопустимы max, min и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:26 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
invmalexeyvgВьюшка пересчитывает при апдэйте всю историю для данных значений полей группировки (то есть по номеру карты), а триггер на вставку будет апдэйтить только одну запись.Не всю. Пересчитывается дельтами только по затронутым строкам. Именно поэтому в индексированных представлениях недопустимы max, min и т.п.Дельтами? Не знал, спасибо. Кстати, странно, что max, min недопустимы. Они ведь тоже дельтой вычисляются - добавленное (изменённое) значение больше чем было текущее (для поля группировки, т.е. для ключа view), значит, это новый max ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:51 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
cossack5Тут уже предлагали In Memory. Не вижу причин, почему нельзя.Выключается питание, и в базе нет уже подтверждённых платежей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 12:52 |
|
||
|
Таблица для транзакций
|
|||
|---|---|---|---|
|
#18+
stenfordПричем не получится его как-то постфактум слить в другую таблицу и посчитать там - баланс должен быть актуален немедленно что-бы карта в минус не ушла пока аналитика где-то там пересчитывается. Как все эти проблемы решаются? Точное число транзакций неизвестно, это зависит от обьема бизнеса, сегодня может быть небольшой, те-же несколько тысяч в секунду, но через пару лет могут до сотен тысяч вырасти - не перекраивать-же систему из-за этого, архитектурно надо сразу правильно сделать с прицелом на большие обьемы Ну совсем онлайн не получится, конечно. Если вставка будет не справляться, можно делать только пакетную запись, скажем 1 раз в секунду. Например, накапливать транзакции в промежуточных таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 13:14 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39459331&tid=1688406]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
138ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 498ms |

| 0 / 0 |
