Помощник
Здравствуйте, гость ( Вход | Регистрация )
Поддержка нескольких БД |
Alexander |
2008-12-17, 18:24
Сообщение
#1
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Благодаря KrasivayaSvo, мне достался набор классов для подключения к различным БД: MySQL, firebird, MSSQL, ODBC, MySQLi, ORACLE, Postgres, SQLite...
Сегодня я решил немного поковыряться во всем этом, хочется научить систему работать не только с MySQL.. В процессе ковыряния, пришел к выводу, что поддержку MySQL, MySQLi, Postgres и SQLite сделать возможно, а вот от всех остальных придется отказаться. Почему? 1. Прежде всего, трудно поверить и невозможно представить, что поддержка такого количества БД реально необходима. Подавляющее число сайтов в сети, используют либо MySQL, либо Postgres. Хостинги сейчас также ориентированы предоставлять именно эти БД. Поэтому довольно трудно найти сервер с установленными другими БД, а значит не получится как следует протестировать и отладить систему при использовании их. - Зачем писать по теории то, что никем не будет использовано, а также не будет гарантий корректной работы. 2. Отличие в SQL запросах. Например, в MySQL и ORACLE по-разному расставляются пределы выборки (LIMIT), кроме того мне смутно верится, что в MSSQL существует функция UNIT_TIMESTAMP и многое другое. Конечно, можно абстрагировать написание запросов в БД (для вставки, обновления и удаления я так и сделал, но как красиво абстрагировать SELECT я так и не придумал), однако такое чревато трудностями при написании/понимании SELECT запросов, что резко отпугнет не только новичков, но и других разработчиков. Не знаю, как вам, но мне при виде:
хочется закрыть файл и куда-то убежать.. Ведь если я, изрядно поднапрягшись, - еще могу понять, что хотел получить автор этого запроса; то самому написать нечто подобное - ПРОСТО НЕВОЗМОЖНО! 3. В MySQL, MySQLi, Postgres и SQLite по-моиму нет никакой разницы в запросах - принципы и функции те же.. Значит никому не придется привыкать к новым стандартам или прочим "новинкам". Я имею ввиду разработчиков сторонних модулей, которые, надеюсь, будут. Прав ли я? Что думаете по этому поводу? Сообщение отредактировал Alexander - 2008-12-17, 21:54 |
|
|
||
Next |
2008-12-17, 18:53
Сообщение
#2
|
|
Новичок Группа: Разработчики Сообщений: 76 Регистрация: 2008-12-13 Репутация: нет Всего: 8 |
MySQL, MySQLi, SQLite
Все остальное не нужно |
|
|
||
Гость_xakep_* |
2008-12-17, 19:44
Сообщение
#3
|
|
Гости |
Может вообще кроме mysql ничего ненужно? или один из вариантов на странице скачки сделать несколько вариантов: mysql версия, Mysqli, sqlite.
|
|
|
||
Youshi |
2008-12-17, 21:48
Сообщение
#4
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
MySQL, MySQLi, Postgres ИМХО |
|
|
||
Гость_livetver_* |
2008-12-17, 21:53
Сообщение
#5
|
|
Гости |
Большинство будет MySQL, MySQLi юзать...
|
|
|
||
Youshi |
2008-12-17, 22:02
Сообщение
#6
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Эт точно. Но Postgres поддерживать все-таки желательно. |
|
|
||
Гость_RULEVOY_* |
2008-12-17, 22:37
Сообщение
#7
|
|
Гости |
|
|
|
||
Youshi |
2008-12-17, 22:41
Сообщение
#8
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
|
|
|
||
Гость_RULEVOY_* |
2008-12-17, 22:54
Сообщение
#9
|
|
Гости |
мое "краткое сообщение" означало, "а как насчет SQLite" ? Извиняюсь, что недоступно написал... Сообщение отредактировал RULEVOY - 2008-12-17, 22:55 |
|
|
||
Гость_xakep_* |
2008-12-17, 23:32
Сообщение
#10
|
|
Гости |
Я вообще завел речь о том чтобы неписать в коде ничего такого сверх, можно выложить 3-4 дистрибутива под разные БД
|
|
|
||
NoIndex |
2008-12-18, 5:54
Сообщение
#11
|
|
Опытный Группа: Бета-тестеры Сообщений: 825 Регистрация: 2008-12-13 Из: Россия → Новосибирск Версия системы: RC5 Репутация: нет Всего: 24 |
Бред |
|
|
||
Youshi |
2008-12-18, 8:34
Сообщение
#12
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Почему же. Хотя дистриб - это громко сказано, а вот если допустим при установке выбирать необходимый тип БД... я думаю, разумно. |
|
|
||
NoIndex |
2008-12-18, 8:46
Сообщение
#13
|
|
Опытный Группа: Бета-тестеры Сообщений: 825 Регистрация: 2008-12-13 Из: Россия → Новосибирск Версия системы: RC5 Репутация: нет Всего: 24 |
Именно.
Я тебе про тоже и хочу сказать, что для каждой БД делать свой дистр - бред А вот, если сделать выбор БД при установке системы - это нормально. |
|
|
||
Гость_timoxa_* |
2008-12-18, 14:25
Сообщение
#14
|
|
Гости |
Мое имхо- стоит оставить одну mysql. Если хостинг поддерживает несколько видов БД, то mysql- точно одна из них. Так зачем изобретать велосипед, и парить мозги Alexander`a и прочих? Если потребуется экзотика, то можно и другую кмс по такому случаю взять.. Я понимаю что мускул не верх совершенства, но....
|
|
|
||
Youshi |
2008-12-18, 15:22
Сообщение
#15
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Мое имхо- стоит оставить одну mysql. Если хостинг поддерживает несколько видов БД, то mysql- точно одна из них. Так зачем изобретать велосипед, и парить мозги Alexander`a и прочих? Если потребуется экзотика, то можно и другую кмс по такому случаю взять.. Я понимаю что мускул не верх совершенства, но.... Лучше конечно сакцентировать свое внимание на исправлении существующих ошибок в системе, а не на внесении новых ООП - штука такая, что потом всегда можно будет прикрутить хоть 10 классов для доступа к БД - никто и не заметит... |
|
|
||
Screatch |
2008-12-18, 16:09
Сообщение
#16
|
|
Опытный Группа: Eleanor TEAM Сообщений: 717 Регистрация: 2008-11-11 Из: Таллинн Репутация: нет Всего: 20 |
MySQL, MySQLi, Postgres и SQLite
Думаю все 4 надо поддерживать, раз есть такая возможность, то пусть будет, пойдёт системе только на пользу. |
|
|
||
Гость_xakep_* |
2008-12-18, 17:11
Сообщение
#17
|
|
Гости |
Можно как вариант сделать чтобы при установке создавались класы для работы с бд в зависимости от выбора, да и вообще неплохо бы сделать установку в 2 файла (setup.php и файл-архив системы)
|
|
|
||
Гость_Bartelby_* |
2009-01-05, 23:31
Сообщение
#18
|
|
Гости |
MySQL, Postgres
под MySQLi и SQLite я даж хостенгов не видел. Сам использую (в ПХП) только MySQL (один раз юзал MSSQL - заколупался, есть целая куча библиотек для хостеров для связи внешней базы с экземпляром локальной, но ни кто их ставить не хочет). Postgres, насколько я понял, это та же MySQL, только с чуть увеличенными объемами таблиц и поправленными алгоритмами работы. Для некоторых проектов может пригодится. ЗЫ: Хотя я бы еще сделал поддержку БД на плоских файлах а-ля Google но это потом. ЗЗЫ: При установке система не должна что-либо сама создавать (за исключением конфигурации) иначе удалить что-то или поправить смогут только юзеры с правами root (Недавно Битрикс пытался снести с хостинга, пришлось админа просить, что б лично все файлы ручками не перебирать). Выбор при установке должен писать соответствующую переменную в конфиг, а от положения переменно (константы) класс работы с БД уже выбирал как ему работать и какие методы использовать. Или даже сделать абстрактный класс, а внутри его уже подключать класс для работы с нужной БД (? сам не совсем понял что написал) Сообщение отредактировал Bartelby - 2009-01-05, 23:36 |
|
|
||
Alexander |
2009-01-06, 1:45
Сообщение
#19
|
|
Eleanor developer Группа: Администраторы Сообщений: 5 262 Регистрация: 2008-11-11 Из: Николаев Версия системы: RC5 Репутация: нет Всего: 67 |
Админ хостинга идиот, раз так. Больше добавить нечего. |
|
|
||
Youshi |
2009-01-06, 9:38
Сообщение
#20
|
|
Любитель Группа: Разработчики Сообщений: 118 Регистрация: 2008-12-14 Из: Россия. Астрахань Репутация: нет Всего: 8 |
Ты немного не прав. Это вопрос тонкий и надо разбираться в устройстве никсов. А как мне известно, ты их не любишь, мякго выражаясь Так вот с правами доступа там все очень непросто. Точнее ничего сложного. Кроме одного НО!. Апач обычно запускается с правами root (или другого пользователя с широкими правами, но значительно ниже root), и всем файлам, созданным скриптами, автоматически назначается владелец root. То есть в дальнейшем только владелец, то есть root сможет их удалить. Это все происходит если PHP работает как модуль апача. В режиме CGI таких заморочек с правами нет (похоже, что у твоего хостера пхп работает именно как CGI модуль). Вот только это гораздо медленее, чем в первом случае. Хотя конечно есть куча библиотек, решающих эту проблему с модулем Apache, вот только все они глючные и толком не доделанные. В общем к чему это я... не надо винить хостера;) Все правильно сказал +1 |
|
|
||
Текстовая версия | 0.0356 сек. 11 запросов GZIP включен Сейчас: 2024-10-08, 9:08 |