при получении таблицы от набора данных
if( ds != null &&
ds.tables != null &&
dt.tables.Count > 0 &&
ds.tables[0] != null &&
ds.tables[0].Rows > 0 )
{
//use the row;
}
Единая база данных для всех сайтов может оказаться плохим выбором, если у вас есть сайты с большим количеством посещений. Кроме того, это означает, что таблицы базы данных должны быть более сложными, что замедлит работу системы.
Что касается формата баз данных, XML точно не входит в их число. Попробуйте, например, использовать MySQL или Postgree.
Это действительно зависит от того, насколько сложной будет ваша CMS, если это простая микро-CMS, такая же, как блог, и у вас не так много подписчиков на эту услугу, а у этих подписчиков, вероятно, есть те же функции и возможности на их CMS, тогда одна база данных может быть выбором.
Но если ваша CMS имеет много уровней детальной конфигурации, много функций и возможностей, потенциально может иметь большой набор данных для хранения. Я рекомендую отдельную базу данных для каждого экземпляра.
Файловая база данных, особенно база данных такого типа Access, не предназначена для онлайн-приложений, они могут иметь ограничения одновременного подключения, поэтому при получении большого количества запросов она может отказать в обслуживании ваших веб приложение.
Если вы используете технологии Microsoft, у вас нет особого выбора для базы данных, MSSQL, вероятно, единственный выбор, вы можете выбрать SQL Express, но он не идеален для крупных сайтов.
На самом деле существует множество CMS с открытым исходным кодом, даже если вы хотите выбрать CMS на базе технологии Microsoft, вы можете попробовать их в первую очередь, чтобы получить представление о своем дизайне.
удачи.
Почему вам нужно, чтобы он был на нескольких экземплярах? Они работают с одними и теми же данными? ЕСЛИ это так, вы можете настроить каждый экземпляр с собственной базой данных (msSQL, mySQL и т. Д.) И использовать веб-службы для обмена данными между ними. Это было бы наиболее "слабосвязанное" решение :)
Один из вариантов - использовать мультитенантное приложение с одним экземпляром и базу данных.
Для небольших сайтов, которые регистрируются и переходят (SaaS), это позволит сократить расходы на обслуживание для полученного дохода. . Для более крупных клиентов, которые будут платить больше за поддержку и обслуживание, вы всегда можете предоставить им отдельный экземпляр.
В качестве варианта можно разместить базу данных в облаке Microsoft Cloud «SQl Azure». http://www.microsoft.com/azure/sql.mspx
Поскольку вы работаете с .NET, вы можете серьезно взглянуть на SaaSGrid (к сведению - я работаю в Apprenda). Вы просто пишете приложение, как если бы оно было для одного клиента, но после развертывания SaaSGrid преобразует приложение в действительно многопользовательское SaaS-предложение. Таким образом, ваш вопрос о модели данных фактически становится вариантом конфигурации времени развертывания, а не основным решением во время разработки. Также есть масса других преимуществ, но, чтобы не звучать как реклама, я оставлю это как есть :-).
Также, вот хорошая техническая статья о мультитенантности:
http://msdn.microsoft.com/en-us/library/aa479086.aspx
Надеюсь, это поможет.