| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > Хранение данныч в CMS |
| Автор: AztEK 1.4.2006, 16:28 |
| Здравствуйте! Я пишу CMS и сейчас делаю систему хранения даных. Идеология такая: есть набор API функций, которые взаимодействуют с данными(БД, файлы, неважно). И все компоненты системы(включая модули и проч) взаимодецствуют с данными ч/з эти функции. Так вот, вопрос стоит в том, как реализовать это всё хотя бы например для файлов и MySQL. У меня было несколько идей - в одних случаях получалось нерациональное использование БД (хранить сериализованную переменную в текстовом поле), в других - слишком сложно (эмулировать SQL для файлов). Может кто-нибудь занимался таким вопросом и может что-нибудь посоветовать? P.S. Не надо меня отговаривать от этой идеи. |
| Автор: BIG BROTHER 1.4.2006, 19:19 |
| Это называется драйвера для баз - их можно найти великое множество. Глянь ADO DB - это набор абстрактных классов, которые работают практически со всеми БД и упращает разработку и использование |
| Автор: AztEK 2.4.2006, 07:29 |
| Понятно, что нужны драйверы. Я их тоже буду использовать. Наверное вопрос неправильно сформулировал. Тогда вот так: Как работу с БД и с файлами подогнать под единые API функции? |
| Автор: ZlojEzh 2.4.2006, 11:58 |
| все зависит от внутренней структуры данных если она не слишком сложна - вполне может подойти метод полной инкапсуляции объектами всех связей с дынными для каждой сущности создаешь класс с функциями типа getChtoTo(), saveChtoTo(), findChtoToByToTo() и т.д. а уж их реализуешь, как душе угодно очень удобно делать все поля и методы таких классов статическими и встраивать в них кеширование - при большом количестве включаемых файлов одни и те же запросы могут повторяться по несколько раз на один запрос страницы. |
| Автор: AztEK 2.4.2006, 12:24 | ||||
Да, так себе это и представляю, даже начал что-то подобное писать. Делал так: есть драйвера для MySQL и файлов и API-класс, который в частности управляет данными. он имеет такие ф-ции (типа getChtoTo(), saveChtoTo(), findChtoToByToTo()), но я не знаю как их реализовать. Я не могу придумать такой структуры данных, чтобы её можно было нормально реализовать средстами БД (необязательно MySQL) и файлы. А соответсвенно и ф-ции управления ей.
О! А этот ход надо взять на вооружение! |
| Автор: AztEK 5.4.2006, 14:34 |
| Вот что я придумал. Инкапсулировать в одной функции обращение к БД и заносить её в многомерный массив. А потом просто сделать удобные ф-ции для сортировки и выборки из массива. Вопрос: насколько это будет производительно? Ладно, если это конфигурация, а если БД пользователей с тысячами записями... |
| Автор: ZlojEzh 5.4.2006, 19:11 |
| размер таблиц - это еще не самое критичное: а если понадодится выбирать данные из нескольких таблиц? на файлах кранты будет... вывод - структуру данных продумывать надо таким образом, чтобы связи между таблицами были минимальными (возможно даже путем дублирования данных) |
| Автор: AztEK 6.4.2006, 12:23 | ||||
Да, об этом я не подумал. Хорошо, тогда так. Передавать функции в аргументе имя таблицы/файла. Возвращать она будет массив-содержимое.
Связей как я понимаю вообще не будет. |