Система бухгалтерского учета: как осуществить закрытие счета, управлять миллиардами транзакций, созданных несколькими пользователями? - PullRequest
0 голосов
/ 10 января 2019

Я внедряю систему учета в Codeigniter с использованием реляционной базы данных MySQL. Я сталкиваюсь с некоторыми проблемами. Я записываю все транзакции в « Таблицу транзакций », которая в терминах бухгалтерского учета может рассматриваться как Главная книга. Поскольку в моей " таблице транзакций " может быть более тысячи пользователей системы и миллиардов транзакций. Для извлечения бухгалтерских отчетов, таких как Бухгалтерский баланс, мне нужно найти все транзакции этого конкретного пользователя, а затем выполнить другие операции, чтобы сформировать «Бухгалтерский отчет»

Теперь перейдем к вопросу, поскольку рост транзакций слишком высок, что определенно замедлит мою систему. Как я могу решить эту проблему?

Я пришел к решению, которое заключается в «закрытии счета». Если я закрываю учетные записи каждый месяц, ограничиваю пользователей на выполнение функций «Создание, обновление и удаление», тогда я смогу использовать предварительно рассчитанные значения учетных записей для своих учетных отчетов. , но я не могу ограничить пользователя ПРОСМОТРЕТЬ предыдущие транзакции, поэтому в этом случае система должна будет искать его транзакции из миллиардов транзакций, что не решает мою проблему.

Я думаю о переносе закрытых транзакций в отдельную таблицу каждого пользователя, которая может решить проблему, но моя База данных нормализована (3NF). Будет ли хорошей идеей создавать отдельные таблицы для каждого пользователя при создании учетной записи этого пользователя и управлять связью этой вновь созданной таблицы?

Изображение таблицы транзакций

1 Ответ

0 голосов
/ 27 января 2019

Ваша модель может быть неправильной. Вы принимаете одну кредитную и одну дебетовую учетную запись за транзакцию. Часто в транзакции участвует 3 или более аккаунтов.

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

Если вы не предполагаете, что сможете предоставить консультативную помощь с 1 млрд. Записей для многопользовательской системы учета, ваша бизнес-модель несовершенна, и у вас возникнут большие проблемы в будущем. Если это так, то лучше переосмыслить это сейчас.

По моим оценкам, с вашей текущей структурой таблица будет содержать около 0,5 ГБ для записей на миллиард. MySQL должен справиться с этим без проблем, если только у вашего сервера нет места.

...