Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
XML или MySQL - быстродействие и безопастность.
Новая тема
Ответить
цитата
21/02/09 в 06:32
example
После многих часов поиска, мозг отказывается понимать выдаваемое гуглом немерянное количество текстов, преимущественно написанных в начале этого тысячелетия, на запрос что в сабже. Помогите не сойти с ума, расскажите, в 2х-3х словах, что юзать эффективнее для БД?
База планируется не большая, что-то около тысячи (или это большая?) записей.
Нагрузки: ~ раз в неделю обновление базы и трафа ~ 1-2k в сутки.
цитата
21/02/09 в 08:31
Corex
Тысяча записей и 1-2К трафа в сутки - не та ситуация, когда стоит думать о выборе между XML и MySQL.
MySQL запросто держит в сотни раз больше. Пример из личного опыта - небольшое комьюнити, база 200К записей, трафа около 12-15К в сутки, средняя сессия на пользователя 20-30 минут и больше десятка кликов, обычный шаред хостинг. За 4 года работы этого проекта ни разу не было даже проблем с хостингом о превышении системного ресурса, а тормозов и отказов базы тем более. Конечно, при этом важна архитектура базы и правильная работа с ней из языка реализации программы.
XML (как подгруппа flat databases) может быть эффективнее, когда есть сравнительно небольшое число записей (несколько тысяч), огроменный трафик (в несколько сотен тысяч) и необходимо частое и простое считывание данных.
Но тут, опять же, важна архитектура и организация. Если засунуть 1К записей в 1 файл и при каждом запросе парсить его (а это выгрузка всего файла в память), то будет притормажить при каждом запросе. Flat database лучше делать по принципу 1 запись = 1 файл, а файлы раскиданы по 3-4-5 сотен в разные папки.
Ну и самая большая проблема базы на файлах - поиск. Если нужен поиск или сложные группированные выборки, то лучше юзать обычную базу.
цитата
21/02/09 в 09:27
Sicilian
cогласен с Corex -
MySQL в данном случае полностью справится с задачей, да ещё и немалый "запас прочности" останется, поэтому нет смысла ломать голову, разбираясь в доках по XML )
цитата
21/02/09 в 13:18
Pentarh
А к XML ты сам драйвер писать буш?
Делать больше нечего...
цитата
21/02/09 в 17:04
example
Pentarh писал:
А к XML ты сам драйвер писать буш?
Какой еще драйвер?
цитата
21/02/09 в 17:15
True Alex
Ну если это база - с ней надо как-то общаться, для этого нужен драйвер или что-то типа. По умолчанию для работы с XML есть только парсер.
Вообще постановка вопроса неправильная. MySQL - это сервер баз данных, XML - язык разметки.
цитата
21/02/09 в 18:03
example
True Alex писал:
Ну если это база - с ней надо как-то общаться, для этого нужен драйвер или что-то типа. По умолчанию для работы с XML есть только парсер.
А что, готовых решений не существует? Обязательно самому писать надо?
True Alex писал:
Вообще постановка вопроса неправильная. MySQL - это сервер баз данных, XML - язык разметки.
Ну да, и на ХML базы не делают?
цитата
21/02/09 в 22:18
IDmark
Все зависит от цели и сферы использования!
В первую очередь нужно сразу разделить понимание:
Хранение данных и Обмен данными и Работа с данными.
XML используется больше, как универсальный промежуточный формат обмена данными и не приспособлен к хранению и связанным с этими действиями как СУБД, например: ( поиск, обновление, сортировка, выборкой записей и работа с многими форматами данных, а также выполнению транзакций и т.д.).
К примеру, для большинства партнерских shop-ов куда проще и рациональнее использовать xml файл с базой товаров, чем дамп таблиц MySQL.
К томуже работа с XML требует дополнительно модулей (дров и парсера).
Ну и быстродействие, безопасность и учитывая рост проекта, смотри в сторону MySQL.
ИМХО для перечисленных тобой целей используй MySQL и не мудри с XML. А там дальше сам поймешь.
цитата
22/02/09 в 20:05
idk2045
mysql однозначно, нафига плодить какие-то полурешения.
потом тока проблем огребешь.
mysql дешевле и проще в плане кодинга и намного эффективнее, короче одни плюсы)
цитата
23/02/09 в 14:27
zuborg
Что касается выбора между mysql и xml, то в данном случае mysql конечно выглядит предпочтительней
Но есть и другие варианты, например плоский текстовый файл, или файловая база-хеш (например bdb или cdb). Несмотря на очевидное ограничение в функциональности и отсутствии поддержки реляционных запросов - нагрузка на систему будет ещё меньше чем при использовании mysql и появляется ощутимый бонус в надежности решения - mysql то может и лежать, но файловая система наверняка будет работать всегда.
ЗЫ: а кривые руки могут испортить что угодно.
цитата
23/02/09 в 17:17
iRoot
Видимо
zuborg:
никогда не использовал "плоский текстовый файл" в системах, где больше одного пользователя одновременно работают, тогда бы такое не предлагал в принципе.
Так что используйте СУБД и не выдумывайте велосипед.
цитата
23/02/09 в 18:57
zuborg
iRoot писал:
Видимо
zuborg:
никогда не использовал "плоский текстовый файл" в системах, где больше одного пользователя одновременно работают, тогда бы такое не предлагал в принципе.
Так что используйте СУБД и не выдумывайте велосипед.
Для людей, не знающих flock, я и не предлагал.
mysql тоже использует файлы (не совсем "плоские", но тем не менее), но ничего, живет при больше чем один пользователе.
Все зависит от способа использования.
Кроме-то, плоский файл очень даже неплох при небольших размерах базы для предполагаемой нагрузки (обновление раз в неделю). Вон, до сих пор живы скрипты которые пихают ипы ботов как Deny from 1.2.3.4 в .htaccess (абсолютно плоский файл) - и живут вполне успешно пока размер файла небольшой (то есть до поры до времени).
Для значительных размеров базы предпочтительней все же индексированый файл.
цитата
23/02/09 в 19:11
iRoot
Точно! А я дурак, все думаю нафига вообще выдумали управление конкурентным доступом с помощью многоверсионности, если есть такой простой выход как flock!
Уже побежал все переписывать на плоские файлы!
Еще немного покритикую хеш-файл: с ним есть проблема, что нет способа получить с его помощью выборку по промежутку, только по значению, а это очень серьезное ограничение.
цитата
23/02/09 в 20:15
MoriArty
народ, ну чё вы ... ;)
ессно, для каждой задачи своё решение, и ИМХО, в данном случае, ТС следует однозначно выбрать мускуль, ибо он для этого и предназначался.
Однако, в защиту XML-я могу сказать следующее: если презентационная часть (ака Шаблонизация) построена на связке XML/XSLT, то композитное XML-кэширование конечных данных модели (собственно данных, полученных из того же мускуля, и обёрнутых в XML), здесь будет очень кстати. ИМХО, это единственная польза от XML в этом проекте, тех. параметры которого описал ТС.
зы: salvador, может быть ты имел ввиду XML DataBase, и просто слегка смешал эти технологии? Если да,- то к сожалению, мускуль нейтивно ни XML ни XPath до сих пор не умеет, и лучшее со всех сторон, в данном случае:
- Мускуль, как СУБД проекта
- XML, как конфиги и неменяемые данные, по которым не нужен поиск, а только выборка и возможно последующие преобразования
цитата
23/02/09 в 20:21
MoriArty
Оффтопик:
iRoot, а мускуль разве версионник?
цитата
23/02/09 в 20:31
Sterx
Оффтопик:
народ, объясните а преимущество шаблонизатора на xslt в чем?посмотрел hostcms так и не догнал
цитата
23/02/09 в 20:40
MoriArty
Sterx:
, первый, и пожалуй самый адекватный: возможность быстро и просто генерить конечное представление под разные клиенты (html/xhtml, wap, pdf и т.д.), второй, за который цепляются большенство идеологов - общепризнанный стандарт W3C, ну и третий, как следствие - переносимость презентационного слоя на другие платформы (например с mysql+php на java+oracle и т.д.). Остальное,- это вопрос религии, плавно перерастающий в холливар ;)
зы: ну и собственно сам холливар (кстати, очень позновательный) , ознакомившись с которым, можно решить для себя - нужно ли вам XML/XSLT или нет ;)
http://habrahabr.ru/blogs/about_cms/22018/
цитата
23/02/09 в 21:11
iRoot
MoriArty писал:
композитное XML-кэширование конечных данных модели (собственно данных, полученных из того же мускуля, и обёрнутых в XML), здесь будет очень кстати. ИМХО, это единственная польза от XML в этом проекте, тех. параметры которого описал ТС.
Кеширование данных модели в XML это конечно жестко... мне сложно даже представить как можно так спроектировать БД, чтобы XML-кешированные данные модели (и все связанные с этим проблемы) давали прирост в производительности.
MoriArty писал:
зы: salvador, может быть ты имел ввиду XML DataBase, и просто слегка смешал эти технологии? Если да,- то к сожалению, мускуль нейтивно ни XML ни XPath до сих пор не умеет
http://dev.mysql.com/doc/refman/5.1/en/xml-functions.html
Там конечно еще работать и работать в этом направлении, но что-то уже есть.
MoriArty писал:
Оффтопик: iRoot, а мускуль разве версионник?
Да, несколько лет уже... но мало кто об этом знает и еще меньше кто этим пользуется. В будущем поддержка будет только расширятся. Ведь его используют конторы, которые понимают, что метод "ЗАБЛОКИРУЙ ВСЕ, А ПОТОМ РАБОТАЙ" не подходит.
цитата
24/02/09 в 00:40
iRoot
Sterx:
у XSLT-трансформации при всех ее неоспоримых достоинствах, есть огромный и жирный минус, который не позволяет этой технологии завоевать мир
это ее дикая тормознутость по сравнению с компилируемыми шаблонами и эта проблема, похоже, так и не будет решена. Так что ждем новых процессоров, которым все ни по чем и смело внедряем XSLT!
цитата
24/02/09 в 01:27
Stek
А из XSLT можно сторонний php код, файлы инклудить ? Ведь стандартная ситуация "а вот у нас есть тут есть скриптик, как нам его на вот эту страничку вот в это место воткнуть".
цитата
24/02/09 в 14:29
zuborg
Вот "нравятся" мне такие люди - научились молотком орудовать и давай все подряд им клепать - и шурупы вворачивать, и дрова рубить... Без обид!
На самом деле salvador неточно описал условия использования, БД бывают разные (грубо говоря, любой неслучайный набор данных это в своем роде некоторая база данных) - и под каждый разный случай стоит выбирать лучший инструмент.
mysql хорош для своих задач, но нельзя ж абсолютно игнорировать оверхед на сетевой коннект к мускулю, подготовка и пересылка запроса, парсинг запроса мускулем, подготовка плана выполнения, выбор строк в базе которые попадают под where, составление результата для нашего запроса, пересылку его обратно, получение клиентом и декодирование в внутренний php формат (а ещё кучу подробностей пропустил).
В условиях плоского файла это будет несколько системных вызовов (stat,open,read,close) и парсинг средствами пхп или его модуля (смотря какой формат). В случае XML расходы на такой парсинг очень значительны, увы.
Говорить "однозначно подходит" в условиях неполных данных несколько наивно, по моему. Я и сам не "однозначно" настаивал на использовании плоских или индексированых файлов, а просто указал на такую возможность, а выбирать конкретный подход - это уже разработчику решать.
Всем peace.
цитата
24/02/09 в 16:11
MoriArty
ок, не хочу холливарить - не тот форум, и многим будет не интересно, поэтому просто высказываю своё ИМХО
мне сложно даже представить как можно так спроектировать БД, чтобы XML-кешированные данные модели (и все связанные с этим проблемы) давали прирост в производительности.
а кто говорит про полное соответствие DB и модели? я даже не упоминал Active Record и ему подобные. Кэшируются результирующие данные модели/бизнес-логики, которые могут и не быть просто выборкой из базы (и в большинстве случаев не будут её являться). Конкретный пример - сложный расчёт баланса некой организации, развёрутые статсы биллинга (где при расчёте берутся множество параметров, среди которых - вычисляемые на основе других), и т.д., когда последние производятся при множестве заданных параметров. Предлагаете каждый расчёт держать в базе или производить те же самые вычисления, или закешить ненадолгое время? РАЗУМЕЕТСЯ, это рулит когда
презентационная часть (ака Шаблонизация) построена на связке XML/XSLT
Там конечно еще работать и работать в этом направлении, но что-то уже есть.
ну я года два назад и 6й мускуль чисто дома юзал, когда стебл до сих пор 5.x. Всё что стянуто с dev.mysql.com лично мне (и ессно большенству хостеров) юзать стрёмно.
Говорить "однозначно подходит" в условиях неполных данных несколько наивно
Возможно, я где-то и наивен, прочитав вот это
...что юзать эффективнее для БД?
, и посоветовав мускуль ТС, но я руководствовался соображениями не академической заинтересованности ТС в изучении различных технологий, а исходил из вопроса рациональности: ТС не нужно практиковаться в построении реляционной базы, заморачиваться с организациями индексов, "целочной ссылостности" и всего прочего, ему просто нужно сделать небольшой проект с небольшими нагрузками не ради интереса, а исключительно исходя из соображений "отбить бабло", и чем быстрее, тем лучше.
зы: ИМХО мускуль - лучший выбор
зыы: холливар прекратил ;)
правка:
сорь, сразу не заметил
А из XSLT можно сторонний php код, файлы инклудить ?
То, что имелось ввиду? -
http://phpclub.ru/faq/PHP5/XML
(Вызов PHP-функций)
цитата
25/02/09 в 08:12
example
MoriArty писал:
ТС не нужно практиковаться в построении реляционной базы, заморачиваться с организациями индексов, "целочной ссылостности" и всего прочего, ему просто нужно сделать небольшой проект с небольшими нагрузками не ради интереса, а исключительно исходя из соображений "отбить бабло", и чем быстрее, тем лучше.
Так и есть
Спасибо всем за ответы (+8 каждому), я понял, что XML мне не подойдет. Склоняюсь в сторону MySQL, но есть еще мысль заюзать SQLite.
цитата
25/02/09 в 12:53
Stek
Цитата:
Склоняюсь в сторону MySQL, но есть еще мысль заюзать SQLite.
а еще есть postgres, firebird, бесплатная версия sybase, оракл тоже как то там бесплатно на определенных условиях ... но нафига все это ?
Используй мускуль и не создавай себе лишних вопросов, так как у каждой базы будут свои плюсы и минусы.
Но для вэба, в 99% проектах, мускуль является оптимальнейшим вариантом.
цитата
25/02/09 в 15:23
example
Новая тема
Ответить
Эта страница в полной версии