Какой наилучший метод для записи данных из объектов?

#visual-studio #oop

#visual-studio #ооп

Вопрос:

Я собираю большое количество данных в корпоративной системе (через бота) в виде объектов, и я не уверен, каковы рекомендации ООП для работы с этими данными.

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

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

Я часто спрашиваю себя, что рекомендует ООП для хранения данных из объектов. Должен ли объект реализовывать сам методы записи / извлечения данных из базы данных? Или мне следует создать класс для управления записями объектов в БД? Если у вас есть опыт в этой области, я хотел бы знать, что вы практикуете. Спасибо!

Комментарии:

1. «Первый вариант кажется мне более безопасным, но и медленнее из-за постоянной записи» Это верно только в том случае, если вы используете один поток для записи данных, а также сохранения их в базе данных.

2. Я согласен. Я не подумал о потоках, это было бы здорово.

Ответ №1:

Используйте шаблон репозитория, то есть создайте класс для инкапсуляции доступа к некоторому хранилищу.

В вашем случае я рекомендую, чтобы реализация поведения репозитория была следующей:

при сохранении объекта сохраняйте его в памяти и периодически выполняйте массовую вставку в базу данных.

Комментарии:

1. Хорошо, это хороший совет. Я пытаюсь схематизировать, как я это делаю. Есть ли у вас ресурс, где я могу посмотреть пример, чтобы понять, как это можно сделать? Спасибо!

Ответ №2:

Тысячи объектов — это не так уж много. Не беспокойтесь об этом, пока вам не понадобится.

Когда / если вам действительно нужно беспокоиться об этом, вы можете использовать отдельный поток для записи в базу данных.