![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Здравствуйте!
Я пишу CMS и сейчас делаю систему хранения даных. Идеология такая: есть набор API функций, которые взаимодействуют с данными(БД, файлы, неважно). И все компоненты системы(включая модули и проч) взаимодецствуют с данными ч/з эти функции. Так вот, вопрос стоит в том, как реализовать это всё хотя бы например для файлов и MySQL. У меня было несколько идей - в одних случаях получалось нерациональное использование БД (хранить сериализованную переменную в текстовом поле), в других - слишком сложно (эмулировать SQL для файлов). Может кто-нибудь занимался таким вопросом и может что-нибудь посоветовать? P.S. Не надо меня отговаривать от этой идеи. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| BIG BROTHER |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 9.12.2004 Где: Россия, Москва Репутация: нет Всего: 4 |
Это называется драйвера для баз - их можно найти великое множество.
Глянь ADO DB - это набор абстрактных классов, которые работают практически со всеми БД и упращает разработку и использование Это сообщение отредактировал(а) BIG BROTHER - 1.4.2006, 19:32 --------------------
Mess with the best, die like the rest |
|||
|
||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Понятно, что нужны драйверы. Я их тоже буду использовать.
Наверное вопрос неправильно сформулировал. Тогда вот так: Как работу с БД и с файлами подогнать под единые API функции? -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 1 Всего: 15 |
все зависит от внутренней структуры данных
если она не слишком сложна - вполне может подойти метод полной инкапсуляции объектами всех связей с дынными для каждой сущности создаешь класс с функциями типа getChtoTo(), saveChtoTo(), findChtoToByToTo() и т.д. а уж их реализуешь, как душе угодно очень удобно делать все поля и методы таких классов статическими и встраивать в них кеширование - при большом количестве включаемых файлов одни и те же запросы могут повторяться по несколько раз на один запрос страницы. |
|||
|
||||
| AztEK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Да, так себе это и представляю, даже начал что-то подобное писать. Делал так: есть драйвера для MySQL и файлов и API-класс, который в частности управляет данными. он имеет такие ф-ции (типа getChtoTo(), saveChtoTo(), findChtoToByToTo()), но я не знаю как их реализовать. Я не могу придумать такой структуры данных, чтобы её можно было нормально реализовать средстами БД (необязательно MySQL) и файлы. А соответсвенно и ф-ции управления ей.
О! А этот ход надо взять на вооружение! -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
||||
|
|||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Вот что я придумал.
Инкапсулировать в одной функции обращение к БД и заносить её в многомерный массив. А потом просто сделать удобные ф-ции для сортировки и выборки из массива. Вопрос: насколько это будет производительно? Ладно, если это конфигурация, а если БД пользователей с тысячами записями... -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| ZlojEzh |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 8.10.2005 Где: Киев, Украина Репутация: 1 Всего: 15 |
размер таблиц - это еще не самое критичное:
а если понадодится выбирать данные из нескольких таблиц? на файлах кранты будет... вывод - структуру данных продумывать надо таким образом, чтобы связи между таблицами были минимальными (возможно даже путем дублирования данных) |
|||
|
||||
| AztEK |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Да, об этом я не подумал. Хорошо, тогда так. Передавать функции в аргументе имя таблицы/файла. Возвращать она будет массив-содержимое.
Связей как я понимаю вообще не будет. -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Для профи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |