Лекция №25Хранение данных в приложениях

В самых разнообразных приложениях часто возникает задача хранения данных вне оперативной памяти (data persistence), чтобы информация оставалась доступной после завершения работы программы, ее породившей. Также требуется, чтобы из сохраненных данных можно было восстановить объект, эквивалентный сохраненному.

Можно выделить по крайней мере два способа решения этой задачи:

У каждого способа хранения данных есть свои преимущества и недостатки. ORM подразумевает определенные затраты на сопровождение базы данных; с другой стороны, структуризация данных в БД позволяет более эффективно их анализировать. Сериализация данных может использоваться не только для хранения данных, но и для их передачи, например, по сети; два формата сериализации (XML и JSON) де-факто являются стандартами передачи данных в веб-приложениях.

Встроенные средства сериализации (как правило, в двоичные потоки данных) присутствуют во многих языках программирования. Например, в Java сериализуемые классы должны реализовывать интерфейс Serializable; в Python для сериализации используется модуль pickle, входящий в стандартную библиотеку. Как правило, инструменты сериализации задают механизм сохранения данных по умолчанию, который предоставляет широкие возможности (например, сохранение объектов, на которые есть ссылки) и не требует внесения изменений в сериализуемые классы. Код, касающийся логики сериализации, требуется только тогда, когда поведение объекта при сериализации или восстановлении из постоянной памяти отличается от обычного.

Текстовые форматы сериализации используются в основном при передаче данных:

Другой способ постоянного хранения данных — использование объектно-реляционных отображений, которые позволяют наладить двусторонний канал связи между реляционной БД и классами / объектами в ООП. Это значительно упрощает программирование по сравнению с использованием низкоуровневых средств доступа к базам данных и сокращает время на разработку. Современные ORM-системы позволяют в значительной мере избавиться от рутинных действий с СУБД; например, они позволяют автоматически создавать и обновлять структуру таблиц, соответствующих отдельным классам. ORM используются в MVC-платформах, где используются для создания моделей, а также в enterprise-приложениях (например, Java Persistence API).

Скачать презентацию