Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение данныч в CMS 
:(
    Опции темы
AztEK
Дата 1.4.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте!
Я пишу CMS и сейчас делаю систему хранения даных.
Идеология такая: есть набор API функций, которые взаимодействуют с данными(БД, файлы, неважно).
И все компоненты системы(включая модули и проч) взаимодецствуют с данными ч/з эти функции.

Так вот, вопрос стоит в том, как реализовать это всё хотя бы например для файлов и MySQL.
У меня было несколько идей - в одних случаях получалось нерациональное использование БД (хранить сериализованную переменную в текстовом поле), в других - слишком сложно (эмулировать SQL для файлов).
Может кто-нибудь занимался таким вопросом и может что-нибудь посоветовать?




P.S. Не надо меня отговаривать от этой идеи.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
BIG BROTHER
Дата 1.4.2006, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 9.12.2004
Где: Россия, Москва

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



Это называется драйвера для баз - их можно найти великое множество.
Глянь ADO DB - это набор абстрактных классов, которые работают практически со всеми БД и упращает разработку и использование

Это сообщение отредактировал(а) BIG BROTHER - 1.4.2006, 19:32
--------------------
Mess with the best, die like the rest
PM MAIL ICQ   Вверх
AztEK
Дата 2.4.2006, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Понятно, что нужны драйверы. Я их тоже буду использовать.
Наверное вопрос неправильно сформулировал. Тогда вот так:
Как работу с БД и с файлами подогнать под единые API функции?


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
ZlojEzh
Дата 2.4.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



все зависит от внутренней структуры данных
если она не слишком сложна - вполне может подойти метод полной инкапсуляции объектами всех связей с дынными

для каждой сущности создаешь класс с функциями типа getChtoTo(), saveChtoTo(), findChtoToByToTo() и т.д.
а уж их реализуешь, как душе угодно

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

PM MAIL ICQ   Вверх
AztEK
Дата 2.4.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
для каждой сущности создаешь класс с функциями типа getChtoTo(), saveChtoTo(), findChtoToByToTo() и т.д.
а уж их реализуешь, как душе угодно


Да, так себе это и представляю, даже начал что-то подобное писать.
Делал так: есть драйвера для MySQL и файлов и API-класс, который в частности управляет данными.
он имеет такие ф-ции (типа getChtoTo(), saveChtoTo(), findChtoToByToTo()), но я не знаю как их реализовать. Я не могу придумать такой структуры данных, чтобы её можно было нормально реализовать средстами БД (необязательно MySQL) и файлы. А соответсвенно и ф-ции управления ей.

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


О! А этот ход надо взять на вооружение! smile


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
AztEK
Дата 5.4.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вот что я придумал.
Инкапсулировать в одной функции обращение к БД и заносить её в многомерный массив.
А потом просто сделать удобные ф-ции для сортировки и выборки из массива.
Вопрос: насколько это будет производительно?
Ладно, если это конфигурация, а если БД пользователей с тысячами записями...


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
ZlojEzh
Дата 5.4.2006, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 8.10.2005
Где: Киев, Украина

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



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


PM MAIL ICQ   Вверх
AztEK
Дата 6.4.2006, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
а если понадодится выбирать данные из нескольких таблиц?


Да, об этом я не подумал.
Хорошо, тогда так. Передавать функции в аргументе имя таблицы/файла. Возвращать она будет массив-содержимое.

Цитата
вывод - структуру данных продумывать надо таким образом, чтобы связи между таблицами были минимальными (возможно даже путем дублирования данных)


Связей как я понимаю вообще не будет.



--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




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


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

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