Решение asp.net CMS: лучший механизм для хранения данных в SQL

Я работал над рядом систем CMS, использующих платформу .NET (система управления CMS находится в ASP.NET, а сайт, отображающий контент, - это как ASP.NET, так и PHP).

Я традиционно храню сгенерированный контент в классах, сериализуемых в XML, который хранится в MSSQL 2005/2008 в поле varchar (max). Это сделало его структурно удобным для работы с различными потребителями контента, и его можно привязать к классам (для повторного открытия записи CMS и ее редактирования или для веб-сайта-потребителя).

Однако мне было интересно, какой тип механизма хранения популярен в других магазинах CMS, и нравится ли кому-либо или есть серьезные проблемы с подходом, с которым я наиболее знаком.

Хорошо, плохо, некрасиво? Что бы вы сделали?


person pearcewg    schedule 24.11.2008    source источник


Ответы (3)


Я лично отношусь к данным как к любым другим данным, которые будут храниться в системе, например, у меня есть модуль, созданный для DNN, который хранит коллекцию текстовых данных, у меня есть следующий набор столбцов в таблице для него.

  • EntryId
  • Обновлено
  • UpdatedDate
  • Создан
  • Дата создания
  • Порядок сортировки
  • Контент (NTEXT)
  • Скрытый (бит)

Я считаю, что это позволяет легко находить данные и ими легко манипулировать независимо от вызывающего абонента.

person Mitchel Sellers    schedule 24.11.2008

В нашей CMS мы используем структуру, аналогичную той, которую описывает Mitchel Sellers, но мы разделяем контент в отдельной таблице. Это полезно при оптимизации базы данных и позволяет нам легко делиться функциями для управления версиями контента. Затем у нас есть одна таблица для каждого «типа объекта», такого как документы, продукты и т. Д., Где мы описываем объект.

person Rune Grimstad    schedule 24.11.2008

У нас есть ASP.NET CMS в качестве основного продукта, поэтому я знаком с этой проблемой. Это зависит от того, что вы подразумеваете под «сгенерированным контентом». Если вы имеете в виду вводимый пользователем, то мы сохраняем HTML как ntext и другие элементы страницы, используя структуру таблицы, которая позволяет нам иметь гибкий набор полей для каждого элемента страницы (некоторые настраиваются с использованием одного или двух полей, другие - десятков).

Основное преимущество этого заключается в том, что данные в базе данных отражают то, что фактически вводит пользователь. Хранение XML в базе данных SQL - это просто добавление уровня перенаправления, который нам не нужен. Возможно, вы пытаетесь заставить SQL работать как объектно-ориентированное хранилище, что является типичной проблемой, которую помогают решить ORM.

Одна из проблем, с которой вы можете столкнуться, - это сложность повторного использования существующих механизмов поиска SQL с данными XML.

person Falkayn    schedule 19.02.2009