Модераторы: 2man
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интеграция готовой БД с CMS 
:(
    Опции темы
CyraxZ
Дата 9.2.2013, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Имеется довольно большая БД MySQL (100 таблиц). Полностью готовая. Необходимо разработать сайт на основе этой БД.
Вопрос такой: целесообразно ли в данной ситуации использовать CMS ?

Дело в том, что хочу заказать разработку сайта одной из компаний. Они говорят, что будут использовать CMS. При этом связь CMS с моей БД будут устанавливать скриптами (или ещё как - не уточнял). В этой компании говорят, что быстрее и дешевле будет использовать CMS, нежели с нуля разрабатывать Систему управления сайтом.

С CMS никогда не работал. Посему не знаю, как к ним "прикручиваются" сторонние базы данных.
Насколько я понимаю, в процессе визуального "конструирования" сайта с помощью CMS последняя автоматически создаёт свои ("внутренние") таблицы необходимой струткуры. В итоге на сервере будут существовать 2 БД:
1. Основная (исходная)
2. Та, что создаётся CMS и является составной частью CMS

Вроде как такого не должно быть. БД должна быть одна. Дублироваться данные не должны.
Действительно ли проще использовать CMS + организовать синхронизацию баз, либо правильнее будет отказаться от CMS ?

Т.е. какой из вариантов является:
а) правильным (корректным с точки зрения принципов проектирования) ?
б) более простым в осуществлении (т.е. более быстрым и более дешёвым) ?


И такой вопрос: каким образом к CMS прикручивается сторонняя база данных ? Как это обычно делают ?

Это сообщение отредактировал(а) CyraxZ - 9.2.2013, 10:05
PM MAIL   Вверх
Arantir
Дата 9.2.2013, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(CyraxZ @  9.2.2013,  09:03 Найти цитируемый пост)
этом связь CMS с моей БД будут устанавливать скриптами 

Очень смешно... Все веб-языки - это есть скрипты. Скрипт - это, простыми словами, код, который выполняется без компиляции. Любой сайт на PHP - это сплошные скрипты. Слово "скрипты" абсолютно ни о чем не говорит. Это точно такой же выполняемый код, как и на C++ или Pascal, или JavaScripts, или Java и т.д. и т.п.
Процитированная фраза соответствует фразе "А как это сделать? - Руками!".

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

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

Между прикручиванием базы к CMS и прикручиваем ее с ноля разницы намного меньше, чем кажется. Затраты времени как раз не в базе, а во всем остальном, что надо написать для создания сайта.

Связь между сайтом и БД - это запросы. Это запросы, содержащие названия таблиц и полей. По сути, все прикручивание заключается в двух вещах:
- создать запросы с именами таблиц и полей подключаемой базы;
- создать методы, расставляющие полученные с базы данные в нужные места (ну, например, вставляющие автора, текст поста, и прочие данные в кусок HTML-разметки, который является постом, как вот тут на форуме, ну и так в цикле по 20 штук на страницу).

У CMS общего назначения (типа Joomla) нету "свой базы, в которую будут перекладываться данные с другой базы". Это уже чепуха, в этом нет никакого ни технического, ни технологического смысла. В CMS обычно есть "высокоуровневые абстракции" для работы с БД. Это значит, что вы указываете, что у вас, например, MySQL и указываете имя таблицы, и вызываете метод типа "найти все" или "сохранить такие-то значения в эту таблицу". А все запросы, валидация данных и т.п. к БД будут сформированы имеющимся кодом, специального для упрощения работы написанным разработчиками CMS.
Тем не мене, это ничем принципиально не отличается от написания этих запросов вручную. Потому, что названия таблиц и полей, взаимосвязи между таблицами и то, как данные и БД должны быть показаны пользователю в виде HTML - это то, что невозможно просто встроить заранее, так как это зависит от базы и того, что в ней хранится.

Никаких двух баз там не будет. По крайней мере не должно быть из соображений здравого смысла. Особенно. если сайт и БД на одном сервере.


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
CyraxZ
Дата 9.2.2013, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Цитата
Между прикручиванием базы к CMS и прикручиваем ее с ноля разницы намного меньше, чем кажется.

Под "прикручиванием её с нуля" имеете ввиду создание с нуля ?

В общем, посмотрел видеоролики, просмотрел документацию. Вроде как представление теперь имею о CMS. Конструктор Lego, так сказать. Без капли программирования. Из разряда "языков программирования" 5-го поколения.

К вопросу о несерьёзности использования CMS (не в целях реализации сабжа, а вообще, в целом) скажу так. Ответ неоднозначен. Мы ведь пользуемся визуальными редакторами форм в прикладном программировании (думаю, все ими пользуются). А можем и кодом эти формы состряпать. Те самые компоненты Delphi и C++ Builder'а "на все случаи жизни" (даже классы, не имеющие отношения к интерфейсу, оформили в виде этих самых компонентов - несерьёзно), которые мышкой на форуму перетаскиваются. Тоже этим пользуются.
В веб-программировании это всё организовано в виде CMS.

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

С другой стороны, встаёт вопрос о том, насколько данные, отображаемые на сайте, будут самодостаточны и независимы от CMS. Вообще, я не люблю "визуальное программирование" по той причине, что поведение программы тобой практически не контролируется на уровне кода. Код можно скопировать, забэкапить. А то, что ты наконструировал мышкой неизвестно где, как и в каком формате хранится и в громадной степени зависит от IDE или CMS.
Насколько я понял, при работе с CMS программирование имеет место только при разработке собственных модулей. И только через код таких модулей можно обращаться к своей собственной (т.е. внешней по отношению к CMS) базе данных. Всё, что "конструируется" визуальными средствами CMS, сохраняется в собственной БД CMS, которая хранит всё - и настройки, и пользователей, и собственно информацию, отображаемую на веб-страницах. Наприме, Joomla 2.5 при установке создаёт БД из 61 таблицы и далее в процессе визуального конструирования сайта всю информацию раскидывает по этим таблицам.
Структура такой БД вовсе нечитабельна и понимается только самой CMS. Вот здесь как раз и имеет место полная зависимость БД с твоей информацией от испольуемой CMS. Выдирать из её БД некоторую информацию в целях бэкапа - это какой-то изврат.

---------------------------------------------
Я представляю себе такую организацию взаимодействия: есть БД, которая разработана тобой лично. Отшлифована с учётом всех требований к проектированию БД. Даны корректные имена всем таблицам,  созданы оптимальные индексы, представления и т.п. Далее ты либо сам программируешь сайт (возможно, с использованием фреймворков), либо используешь CMS, но в качестве хранилища твоих данных используется твоя БД (ну а всякие настроки и вся прочая шелуха, необходимая для работы CMS, пусть храниться в её собственной БД).
В последнем случае возникает проблема: CMS ты выбираешь потому, что она предоставляет уже готовый функционал. Но использование этого функционала подразумевает хранение соответствующих данных в её собственной БД. А если я хочу использовать её функционал, но при этом работать со своей БД ?  Мне придётся весь используемый функционал переписать в модулях (т.к. со своей БД я могу связаться только через модули). Тогда зачем нужна CMS...

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

Это сообщение отредактировал(а) CyraxZ - 9.2.2013, 15:09
PM MAIL   Вверх
Arantir
Дата 9.2.2013, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Должен сказать, что одна база другой не мешает. У меня сейчас сайт с тремя базами данных и все работает, как часы. Это 3 сервера, один из них - сам сайт, предоставляющий некий интерфейс, а две другие - это базы двух отельных серверов. Эти два сервера, выполняющие разные функции, являются целостной системой, но разделены для эффективности и устойчивости. Каждый сервер хранит свою информацию в своей базе. Информацию другого сервера он у него запрашивает, а не хранит у себя. В том числе это касается сайта. Сайт хранит в своей БД только такие данные, как сессии, настройки сайта, настройки пользователей, разные служебные данные компонентов сайта.

Универсальная CMS (Joomla, Droopal и т.п.) по своей природе должна обладать средствами для свободной работы с любой дополнительной базой данных. Далеко не каждый сайт является сам себе приложением. Множество сайтов предоставляют пользователю информацию с совершенно других систем (возьмем, к примеру, онлайн игры) или служебных баз данных (сайт розничного магазина с информацией о ценах/товарах, наличии на складе).

Есть такой термин как ORM. Это есть представление базы данных, как структуры классов объектов, построенной по принципам ООП. База предоставляет собой данные о неких логически связанных сущностях, где связи могут быть такие как "один-к-одному", "один-к-многим", "многие-к-многим"... Например, на форуме пользователь из таблицы "пользователи" имеет много постов из таблицы "посты", и имеет один аватар из таблицы "автары пользователей".
Хорошо реализованная ORM позволяет создавать подобные связи независимо от названий полей, названий таблиц, количества баз данных, и, иногда, даже независимо от типов баз данных, в идеале - независимо совершенно ни от чего, кроме самих логических связей между данными в базах. А главное - позволяет при всем этом получать, изменять и сохранять все эти данные корректно, используя только созданную объектную структуру (функции/методы объектов и классов).

Но это было слегка отступление. Возвращаясь к вопросу... Найти CMS под вашу базу данных, это как подбросить горсть монет и получить все решки.
Что такое CMS. Стоит уточнить, что такое CMS именно в вебе. В вебе CMS зачастую - это что-то более-менее готовое. Например - форум! Ну, по крайней мере, из продвинутых вариантов. Форум - это полноценный движок, позволяющий создавать разделы, администрировать посты/темы/форумы/пользователей, добавлять/удалять/включать/выключать/изменять модули/плагины/дополнения, иными словами полноценная CMS, где вам совершенно не нужно лезть в исходный код, чтобы сделать все, что можно захотеть. 

Назвать термином CMS можно много чего, это не синоним всяких там джумл, друпалов, вордпрессов. Последние - это CMS того, для чего они созданы. По-этому и стоит задуматься, предназначены ли они для того, что вы в итоге хотели бы получить.

Если ваша база создана вами лично под ваши собственные потребности (потребности вашего предприятия), то вряд ли вы найдете CMS, чудесным образом вашей базе соответствующую.
В вашем случае вам самостоятельно придется реализовать способы представления хранимой информации в виде, пригодном для восприятия и взаимодействия с ней пользователями сайта.

Стоит заметить, что готовый сайт еще сам себе не CMS, исходя из обозначения этого термина. CMS - это что-то внешнее, с помощью чего создается сайт. Ну, собственно, в этом и проблема в вашем случае, проблема в том, что львиная доля работы - не удел CMS.
Обычно в случае CMS разработка начинается с CMS. А вам разработку надо начинать с базы данных, создавая сайт вокруг структуры этой базы, предназначенный для этой структуры.

Я бы использовал фреймворк. Ну, конечно, как веб-разработчкика, мое мнение является относительным и субъективным =). Фреймворк - это то, что можно смело брать за нулевую точку отсчета. Фреймворк не задает никаких ограничений, не является куском реализации будущего сайта. Это каркас, набор тривиальных операций, нужных при создании любого веб-сайта, которые уже реализованы вместо вас. 

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



--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
CyraxZ
Дата 9.2.2013, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Цитата
Если ваша база создана вами лично под ваши собственные потребности (потребности вашего предприятия), то вряд ли вы найдете CMS, чудесным образом вашей базе соответствующую.
В вашем случае вам самостоятельно придется реализовать способы представления хранимой информации в виде, пригодном для восприятия и взаимодействия с ней пользователями сайта.

Arantir, верно ли я понимаю, что стандартный функционал CMS не может работать с чужими базами данных. Т.е. например, невозможно использовать модуль новостей, входящий в состав CMS, с собственной базой данных новостей ?
Т.е. весь функционал, связанный с данными, хранящимися в моей собственной БД, придётся реализовывать самостоятельно. Так ?

Цитата
Если вы будете использовать CMS, то, как я писал выше, и как писали вы, - если ее функционал действительно полезени ее использование оправдано, то повторюсь - дополнительная база - это не камень преткновения.

Моя база данных позволяет моделировать весьма сложные сущности предметной области со сложными связями. Уверен, что ни одна CMS с помощью средств визуальной разработки не позволит создать даже близкую по мощности модель. Посему, использование собственной БД является, скорее, необходимостью.
В то же время, моя БД не касается сессий, пользователей, новостей, настроек и администрирования сайта, рекламных баннеров и других элементов. И весь этот функционал можно реализовать, используя готовые решения CMS.

Это сообщение отредактировал(а) CyraxZ - 9.2.2013, 18:33
PM MAIL   Вверх
Arantir
Дата 10.2.2013, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Рыбак без удочки
**


Профиль
Группа: Участник
Сообщений: 960
Регистрация: 18.11.2012

Репутация: 1
Всего: 55



Цитата(CyraxZ @  9.2.2013,  17:29 Найти цитируемый пост)
Arantir, верно ли я понимаю, что стандартный функционал CMS не может работать с чужими базами данных. Т.е. например, невозможно использовать модуль новостей, входящий в состав CMS, с собственной базой данных новостей ?
Если структура базы данных другая, то да. Трудно представить себе объемы исходного кода и требуемых ресурсов системы, которая "сама вывела бы новости из новостной базы данных с абсолютно любой структурой". Это просто нецелесообразно. Такую махину, наверное, и на хостинг не поставишь.

Цитата(CyraxZ @  9.2.2013,  17:29 Найти цитируемый пост)
Т.е. весь функционал, связанный с данными, хранящимися в моей собственной БД, придётся реализовывать самостоятельно. Так ?
Вам в любом случае придется "научить" приложение выдавать данные из нужных полей и таблиц в виде размеченного HTML кода, чтобы потом пользователь правильно понял эти данные (например, дата регистрации в БД скорее всего имеет вид "1360400318", но на сайте мы видим "Регистрация: 10.02.2013"); а так же записывать эти данные (например, этот пост с помощью HTML-формы будет сохранен в таблицу постов, потом будет обновлено время моей последней активности, счетчик постов и т.п.).

CMS о взаимосвязях таблиц и полей в ваше БД явно сама не догадается.

Цитата(CyraxZ @  9.2.2013,  17:29 Найти цитируемый пост)
Уверен, что ни одна CMS с помощью средств визуальной разработки не позволит создать даже близкую по мощности модель. Посему, использование собственной БД является, скорее, необходимостью.
Сказали верно, но CMS тут ни при чем. Средствами визуальной разработки модели и так не делаются. Модель - это "x^2 + y^2 + z^2 = 0", а не синий шарик на экране. То, что для модели требуется БД, тоже к CMS не имеет отношения. Сложная модель, требующая хранения данных, нуждается в БД сама по себе, если большие объемы данных являются частью природы подобной модели.

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

Ну так вот, естественным образом подходя к выводу... У вас есть БД, представляющая данные некой модели. Что это за модель - никто и ничего не знает. Знаете только вы, так как под эту модель создавали БД. Вам нужно данную модель реализовать. Реализовать теми средствами, которые вы выбрали и имеете. 
То есть, что бы вы не выбрали, вам придется реализовывать свою модель. Какая бы там не была навороченная система, все равно останется некий минимально возможный набор работы, которую надо сделать: указание взаимосвязей, преобразование данных перед выводом, перед записью и т.п.


Чтобы лучше понять, давайте введем термин "нулевая точка отсчета" разработки, для обозначения тех средств, с которых начинается разработка вашего проекта, но которые в себе еще не содержать самого проекта.
Если вы хотите форум - то за нулевую точку можно взять уже готовый форумный движок. Так как функционал форума - это то, что есть "само собой разумеющимся" в вашем проекте. После этого ваша работа заключается в изменении дизайна, изменении настроек, создании разделов, подразделов, создании групп пользователей (модеры, админы) и всякое такое.
Если брать за начальную точку веб-фреймворк, то на нем можно построить абсолютно любой веб-сайт. Но только веб-сайт и не более. 
Чтобы написать сервер браузерной игры, его надо писать с соответствующими средствами, возможно на неком серверном фреймфорке или чисто возможностями языка программирования.

Ну так вот, при разработке, то, что вы еще не реализовали, и что является частью проекта, должно, желательно, лежать после вашей нулевой точки, а не до нее. 
Никто не станет реализовать сервер игры на веб-фреймворке, просто потому, что веб-фреймворк предназначен совершенно не для этого. На веб-фреймворке можно было бы реализовать сайт для этого сервера, но не сам сервер.


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


--------------------
interface Жопа {
    // ATTENTION: has to be implemented by every class of the project for proper project work
}
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Поиск движков для сайта | Следующая тема »


 




[ Время генерации скрипта: 0.1682 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.