Я участвую в процессах замены рамки для довольно сложного бизнес-приложения. Наше приложение работает на платформе LAMP, и новая инфраструктура будет расширением CodeIgniter.. В своих исследованиях для разработки фреймворка я решил изучить ORM, я никогда раньше не делал ORM, и я хотел знать, будет ли это полезно для нашего приложения. Затем я наткнулся на очень интересное сообщение в блоге под названием "Why I Do Not Use ORM.". Этот блог, похоже, подтвердил многие мои опасения по поводу использования ORM, а также представил решение, подобное тому, что я уже планировал.Словарь данных или ORM?
К «словаря данных» Я планирую использовать это определение из "The Database Programmer" блога:
Термин «словарь данных» используется многими, включая меня, чтобы обозначить отдельный набор таблиц, который описывает приложение столы. Словарь данных содержит такую информацию, как имена столбцов, типы и размеры, но также описательную информацию, такую как заголовки, титры, первичные ключи, внешние ключи и подсказки для интерфейса пользователя о том, как отображать поле.
Таким образом, в выборе «словарь данных» над ОРМОМ I может быть экспонированием предвзятости подтверждения, независимо вот мои причины быть устал от ОРМА:
- Я никогда раньше не использовал ORM, я не» Знаю об этом много.
- Эта структура должна быть построена довольно быстро, у моего босса мало времени, и мне нужно создать рабочее приложение, которое позволит плавное обновление до более современной структуры.
- Мой босс уже думает, что я над разработкой этой структуры (поверьте мне, я не так близко к ней) и параноик по поводу рамки, препятствующей нам делать то, что нам нужно, и создавать ошибки, которые мы не может решить в требуемое время. До сих пор я плохо работал над тем, чтобы убедить его в том, что изменения хороши, я не очень эффективный продавец, и, хотя другие разработчики могут помочь мне, босс все еще нуждается в большой уверенности.
- Наша старая структура является процедурной, наш код является PHP, и наши разработчики отлично знают SQL. ORM будет большим изменением.
- Наша база данных содержит десятки таблиц, многие из которых содержат сотни тысяч записей на довольно старом сервере. Раньше мы были сожжены кодом, который повторяет опросы базы данных в цикле вместо того, чтобы делать один запрос, чтобы вытащить все необходимые данные сразу. Устранение этой проблемы с помощью ручного кодирования SQL довольно прямолинейно. Обеспечение того, чтобы это всегда происходило, когда это необходимо, с ORM является для меня огромным неизвестным и представляется рискованным.
Несмотря на это, решение словаря данных представляется весьма перспективным для меня, как этот блог "Using A Data Dictionary", кажется, дают много полезных функций и некоторые из которых являются требования новой структуры. Вот мои причины для предпочтения решения словаря данных:
- Внедрение правил контроля доступа на самих строках таблицы было бы неоценимым.
- Автоматическое создание изменений базы данных, документация и проверка схемы также будут полезны.
- Одним из требований к структуре является общая функция истории/аудита данных, которая может применяться к любой вспомогательной функции в нашем приложении. Для обеспечения такой функции необходим словарь данных или эквивалент. История должна содержать подробную информацию о структуре и типах данных в базе данных.
- Наши системы содержат широкий спектр типов данных, которые были бы более правильно адресованы, если бы они рассматривались как формальные типы в приложении. Во-первых, фрагменты HTML (которых у нас много в наших данных, они требуются) должны быть закодированы как сущности в некоторых случаях, декодированы как HTML в других, в некоторых случаях анализируются на ссылки и изображения и всегда проверяются на правильность. Затем есть даты, измерения, валюта и различные другие области, которые могут извлечь выгоду из наличия четкого определения в коде того, как эти данные должны быть обработаны.
Идея словаря данных, которую я хотел бы реализовать, представляет собой серию объектов в отдельных файлах PHP, и будет много ООП, однако оно будет использоваться так же, как и концепция словаря данных представленный в блоге «Программист базы данных». Это будет определение единственного источника полной схемы базы данных для всей структуры.
Теперь я задаю вопрос: могу ли я игнорировать значение ORM или это случай, когда словарь данных является правильным инструментом для работы?
Это довольно тщательная надстройка. Ни один из старого кода на стороне сервера не будет в новой системе. Но ваш ответ кажется правильным. –