20 советов и трюков для всех, кто занимается разработкой под MySQL PHP


Оглавление (нажмите, чтобы открыть):

Разработка web приложения

Здравствуйте есть очень интересный вопрос
php mysql как сделать расписание занятий для колледжа , расписание должно выводиться по выбору группы и дате дня на которое будет расписание
Хотелось бы получить советов как мне все это дело лучше сделать но больше всего меня интересует как для этого делать спроектировать бузу данных
Расписания должны примерно выводиться следующим образом
Дата Группа Номер пары Название пары Аудитория

Как то так всем заранее спасибо

Добавлено через 8 часов 38 минут
Кто ни будь помогите подскажите

30.12.2014, 05:09

Разработка и реализация web приложения используя mysql
Дано Произвольное количество пользователей. У каждого пользователя есть логин, пароль, Ф.И.О.

Visual Studio 2010 создание Web-приложения
Создаю новый проект Web-приложение, открывается и сразу выдает ошибку, а потом перезапускается вся.

Где можно почитать как же все таки правильно писать WEB приложения?
Доброго времени суток! Немноженько предыстории. Нужно было накодить менеджер контактов.

Разработка web-приложения, приложения под ОС Android,Windows
Доброго времени суток ребят, кто узрел эту тему прошу не проходите мимо, прошу вашей помощи.Мне.

Разработка web-приложения, приложения под ОС Android,Windows
Доброго времени суток ребят, кто узрел эту тему прошу не проходите мимо, прошу вашей помощи.Мне.

Правильные и красивые обращения к БД MySQL

Часто бывает так, что делаете запрос к БД (Базе Данных) и вроде ячейки есть такие, а запрос не проходит. Беда в том, что есть область имён, которые зарезервированы для внутренних процедур PHP,MySQL, поэтому такие имена как ‘desc’, ‘link’ перестают работать. Ваши запросы обычно выглядят так:

Правило №1: обязывать не буду, но в качестве рекомендации советую использовать не зарезервированные имена ячеек и таблиц. К примеру: вместо desc мы пишем description, или вместо link пишем href.

Правило №2: все имена ячеек или таблиц рекомендованно обрамлять такой кавычкой ` , это позволит скрипту понять, что в данном слове обращение идёт непосредственно к таблице или ячейке, а не конкретный процес. Не смотря на это, если мы забываем про эту кавычку, при обращении к БД MySQL сам дописывает их. Путаница как раз возникает, когда имя ячейки и команды одинакова, а кавычки не проставлены, тогда скрипт не может определить, что именно хочет пользователь в данном случае. Вот пример, как надо:

Правило №3: запросы на вставку можно делать двумя способами. Первый я уже показывал, второй более удобен, когда вставляем одну запись. Рекомендую использовать именно её, тогда логическая часть вставки будет виднее (далее уже будем рассматривать вторую вставку). Смотрим 2 одинаковых вставки двумя стилями:

Правило №4: исходя из общих правил выделения переменных в строках, обрамляем их кавычками либо фигурными скобками:

Это и есть тот пример, когда красивее смотрелись бы фигурные скобки, смотрим:

Правило №5: это стиль, особенно когда работаем в команде или выставляем конкурсные работы. Давайте посмотрим на обычный запрос обновления данных (тоже самое и при вставке) данных (большой) со стилем, думаю, разница будет заметка на глазах:

Правило №6: все данные, уходящие в таблицу защищать. Меры предосторожности никогда не повредят. Любые цифровые данные (целые) достаточно приводить к числу: (int)$ посягательств на нашу целостность и конфиденциальность данных в базе. Результат смотрим далее:

Работа с MySQL

MySQL относится к числу баз данных, обеспечивающих наиболее простое администрирование на всех платформах. Кроме того, эта база данных не требовательна к ресурсам, поэтому может эксплуатироваться даже на персональных компьютерах с небольшим объемом оперативной памяти и жесткого диска. В связи с этим разработчики, использующие средства PHP, продолжительное время применяют MySQL для создания полной локальной среды разработки для веб на клиентских компьютерах всевозможных типов, даже на портативных.

Любой разработчик, работающий в среде PHP, способен самостоятельно администрировать базу данных MySQL, в отличие от некоторых других баз данных. Для того чтобы еще больше упростить задачу администрирования, можно воспользоваться многочисленными инструментальными средствами, которые не только предусмотрены в самой базе данных MySQL, но и могут быть получены от сторонних разработчиков.

Основными понятиями, с которыми следует ознакомиться на данном этапе, являются:

  • база данных — контейнер для всей коллекции данных MySQL;
  • таблица — вложенный в базу данных контейнер, в котором хранятся сами данные;
  • строка — отдельная запись, в которой могут содержаться несколько полей;
  • столбец — имя поля внутри строки.

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

Доступ к MySQL из командной строки

Работать с MySQL можно тремя основными способами: используя командную строку, используя веб-интерфейс наподобие phpMyAdmin и используя такой язык программирования, как PHP. Третий из перечисленных способов будет рассмотрен в последующих статьях, а сейчас давайте рассмотрим первые два способа.

Если у вас в соответствии с инструкциями, изложенными в статье Установка и настройка OpenServer, установлен WAMP-сервер OpenServer, то доступ к исполняемой программе MySQL можно получить из следующего каталога:

Вместо MySQL-5.7-x64 нужно подставить версию, указанную в настройках OpenServer во вкладке «Модули».

Нужно открыть программу «Командная строка» и перейти в этот каталог. Делается это при помощи команды cd ПУТЬ_К_НУЖНОЙ_ПАПКЕ:

После этого нужно запустить программу mysql.exe в этом каталоге, передав её специальный параметр. Для этого в командной строке теперь нужно выполнить команду:

В результате запустится MySQL-клиент. Он подключён к MySQL-серверу, который был запущен при старте OpenServer-a.

Если это не приведет к желаемому результату и будет выдано сообщение об ошибке подключения к серверу MySQL «Can’t connect to MySQL server on ‘localhost’», убедитесь, что OpenServer запущен и в модулях указан MySQL.

Параметр -u расшифровывается как user. То есть это флажок для указания пользователя, под которым нужно подключиться к серверу. root — это самый главный пользователь в MySQL. Он создаётся при установке сервера и по умолчанию у него нет пароля.

Но вернёмся к нашему терминалу. Через этот консольный клиент мы можем отправлять различные команды серверу. Давайте выполним команду, которая выводит все базы данных, созданные на этом сервере.

В ответ мы получим красиво оформленный список баз. У вас их будет меньше, чем у меня, потому что я их уже добавлял.

Работа с MySQL через phpMyAdmin

Для управления базами данных и таблицами будет намного проще и быстрее использовать программу phpMyAdmin. Перед тем как вводить в адресную строку браузера следующую строку, нужно убедиться в том, что программа OpenServer уже запущена и, значит, база данных MySQL готова к работе:

Тут нас встретит вот такое красивое окошечко для входа в систему.

Также как и в случае с консольным приложением указываем пользователя root и оставляем пустым пароль. Жмём «войти».

После этого вы попадёте в панель управления базами данных с довольно дружелюбным интерфейсом. Слева вы увидите всё тот же список баз данных, который вы получали в консольной версии. Можете по ним потыкать, посмотреть, что там внутри.

А сейчас давайте нажмём на вкладку SQL и перейдём в окно, где можно напрямую писать запросы к СУБД MySQL, как это было бы в консоли:

В открывшемся окне введите всё тот же запрос:

Нажимаем кнопку «вперёд» и видим тот же результат, что и в случае с консольным приложением.

Основные понятия языка SQL

По словам Эндрю Тейлора (Andrew Taylor), разработавшего язык SQL, название этого языка не является сокращением от Structured Query Language (или от чего-то подобного), хотя многие считают, что так оно и есть. Язык SQL лежит в основе более строгого и более общего метода хранения данных по сравнению с предыдущим стандартом организации баз данных в стиле DBM, который основан на использовании плоских файлов.

Язык SQL определен стандартами ANSI (American National Standards Institute) и ECMA (European Computer Manufacturer’s Association); обе эти организации по стандартизации являются международно признанными. Но следует учитывать, что в общих рекомендациях стандартов SQL наблюдаются заметные различия, касающиеся программных продуктов коммерческих компаний, с одной стороны, и организаций, занимающихся разработкой баз данных с открытым исходным кодом, с другой. Например, за последние несколько лет наблюдалось стремительное развитие так называемых объектно-реляционных баз данных, а также программных продуктов SQL, специально предназначенных для рынка веб. Перечень баз данных, которые могут применяться в сочетании с системой PHP, чрезвычайно велик, поэтому при выборе наиболее подходящей базы данных необходимо руководствоваться определенными принципами.

Основной принцип состоит в том, что нужно прежде всего учитывать собственные потребности разработки или по крайней мере твердо знать, какой цели требуется достичь. Пытаясь ознакомиться с другими рекомендациями, вы встретите массу весьма убедительных сообщении с такими доводами, что буквально «нельзя обойтись» без некоторых развитых средств базы данных (таких как триггеры или хранимые процедуры) и любой программный продукт с поддержкой SQL, в котором отсутствуют эти средства, вряд ли заслуживает права называться продуктом SQL. Воспринимайте эти суждения с большой долей сомнения. Гораздо лучше самому составить список требуемых характеристик в порядке значимости, а затем заняться поиском программного продукта, который в наибольшей степени соответствует вашим требованиям.

Но, несмотря на сказанное выше, значительная часть средств поддержки языка SQL действительно соответствует стандарту. Поэтому в программах, как правило, неоднократно используется лишь несколько операторов SQL, независимо от того, какой конкретный программный продукт был выбран для внедрения.

По существу, база данных SQL имеет очень простую логическую структуру. Каждая конкретная инсталляция программного обеспечения SQL обычно может состоять из нескольких баз данных. Например, одна БД может применяться для хранения данных о заказчиках, а другая — содержать данные о товарах. (Возникает определенная сложность, связанная с тем, что сам сервер SQL и коллекции поддерживаемых этим сервером таблиц обычно принято обозначать общим термином база данных.) Каждая база данных содержит несколько таблиц, каждая таблица состоит из тщательно определенных столбцов, а каждая позиция в таблице может рассматриваться как внесенная в таблицу запись, или строка.

Любой сервер SQL поддерживает четыре так называемых оператора манипулирования данными, и в целом эти операторы лежат в основе подавляющего большинства операций, выполняемых с реляционной базой данных. Этими четырьмя основными операторами базы данных являются SELECT, INSERT, UPDATE и DELETE. Операторы SQL, называемые также командами — очень удобны и позволяют выполнять практически все необходимые действия в базе данных.

Важной особенностью указанных четырех операторов SQL является то, что они позволяют манипулировать только значениями, хранящимися в базе данных, но не воздействуют на структуру самой базы данных. Иными словами, команды на основе этих операторов могут использоваться, например, для ввода данных, а не для создания базы данных; с помощью таких команд можно удалить из базы данных любой фрагмент данных, но сама «оболочка» останется нетронутой, поэтому, в частности, нельзя присвоить другой базе данных, работающей под управлением того же сервера, имя существующей базы данных. Для того чтобы добавить или удалить столбцы, уничтожить целую базу данных, не оставив и следа, или создать новую базу данных, необходимо применить другие команды, такие как DROP, ALTER и CREATE.

Все эти операторы мы подробно рассмотрим в следующей статье, посвященной командам MySQL.

10 рекомендуемых книг-бестселлеров по PHP

�� Лучшие премиум-темы для Вордпресс от топовых разработчиков мира

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

Да, на блогах можно встретить много интересного и познавательного из области веб-программирования. Но матчасть все же лучше изучать по хорошим учебникам и самоучителям.

Сегодня я публикую подборку рекомендуемой учебной литературы по языку PHP. Все книги на русском языке и доступны для приобретения в Ozon.ru.

1. PHP 7

Дмитрий Котеров, Игорь Симдянов

Рассмотрены основы языка PHP и его рабочего окружения в Windows, Mac OS X и Linux.Отражены радикальные изменения в языке PHP, произошедшие с момента выхода предыдущего издания: трейты, пространство имен, анонимные функции, замыкания, элементы строгой типизации, генераторы, встроенный Web-сервер и многие другие возможности. Приведено описание синтаксиса PHP 7, а также функций для работы с массивами, файлами, СУБД MySQL, memcached, регулярными выражениями, графическими примитивами, почтой, сессиями и т. д.


Особое внимание уделено рабочему окружению: сборке PHP-FPM и Web-сервера nginx, СУБД MySQL, протоколу SSH, виртуальным машинам VirtualBox и менеджеру виртуальных машин Vagrant. Рассмотрены современные подходы к Web-разработке, система контроля версий Git, GitHub и другие бесплатные Git-хостинги, новая система распространения программных библиотек и их разработки, сборка Web-приложений менеджером Composer, стандарты PSR и другие инструменты и приемы работы современного PHP-сообщества.

В третьем издании добавлены 24 новые главы, остальные главы обновлены или переработаны.

На сайте издательства находятся исходные коды всех листингов.

2. Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript, CSS и HTML5

Робин Никсон

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

3. PHP7 для начинающих с пошаговыми инструкциями

Майк МакГрат

PHP7 — самый популярный язык программирования в мире. Новый пошаговый самоучитель поможет вам освоить азы PHP7 с нуля за короткое время. Благодаря известной методике пошагового обучения от Майка МакГрата, даже читатели, не имеющие никакого опыта в программировании, смогут приступить к созданию собственных веб-проектов.
Самоучитель написан простым языком, содержит множество иллюстраций, полезные советы и рекомендации.

4. PHP. Объекты, шаблоны и методики программирования

Мэт Зандстра

Четвертое издание книги было пересмотрено и дополнено новым материалом. Книга начинается с обзора объектно-ориентированных возможностей PHP, в который включены важные темы, такие как определение классов, наследование, инкапсуляция, рефлексия и многое другое. Этот материал закладывает основы объектно-ориентированного проектирования и программирования на PHP. Вы изучите также некоторые основополагающие принципы проектирования. В этом издании книги также описаны возможности, появившиеся в PHP версии 5.4, такие как трейты, дополнительные расширения на основе рефлексии, уточнения типов параметров методов, улучшенная обработка исключений и много других мелких расширений языка.

Следующая часть книги посвящена шаблонам проектирования, которые органически дополняют тему ООП и являются описанием элегантных решений распространенных проблем, возникающих при проектировании программного обеспечения. В ней описываются концепции шаблонов проектирования и показаны способы реализации нескольких важных шаблонов в приложениях на PHP. В этой же части приведен материал, посвященный шаблонам корпоративных приложений и баз данных.

В последней части книги описывается несколько важных утилит и методик, помогающих осуществить успешный проект на основе разрозненных кусков кода. В этой части книги описано, как управлять работой нескольких программистов с помощью Git, как выполнить построение и развертывание проекта с помощью Phing и PEAR.

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

Эта книга посвящена трем важным темам: основам объектов, принципам объектно-ориентированного проектирования и лучшим методикам их применения. Изучив их в комплексе читатель сможет создавать первоклассные и отказоустойчивые программные системы.

Основные темы книги:

5. PHP. Быстрый старт

Каллум Хопкинс

Все, что нужно знать о PHP в одной книге!

Язык PHP очень популярен, он обеспечивает функционирование 80% всех веб-сайтов, в том числе таких ресурсов, как Facebook, Wikipedia и WordPress. Этот язык прост в изучении и отлично подходит для начинающих. Изучение материалов нашей книги отнимет у вас минимум времени, но вы получите максимум информации, которую сразу сможете использовать!

Благодаря интенсивному курсу всего за пару дней вы можете:

  • Изучить основы PHP — синтаксис, операторы, циклы и функции;
  • Разобраться в теме объектно-ориентированного программирования;
  • Узнаете, как PHP работает с формами и данными;
  • Сможете повысить безопасность своих PHP-приложений.

Всего за несколько дней вы подготовите солидную базу для самостоятельного создания PHP-кода!

6. Современный PHP. Новые возможности и передовой опыт

Джош Локхарт

Из книги вы узнаете, как РНР превратился в зрелый полнофункциональный объектно-ориентированный язык, с пространствами имен и постоянно растущей коллекцией библиотек компонентов. Автор демонстрирует новые возможности языка на практике. Вы узнаете о передовых методах проектирования и конструирования приложений, работы с базами данных, обеспечения безопасности, тестирования, отладки и развертывания.Если вы уже знакомы с языком РНР и желаете расширить свои знания о нем, то эта книга для вас!

7. PHP. Справочник

Пол Хадсон

Книга представляет собой полное и наглядное справочное пособие по PHP. В числе многих преимуществ PHP перед другими языками web-программирования — легкость разработки и простота обращения, богатые объектно-ориентированные возможности и мощные расширения. Издание содержит емкие, но при этом понятные примеры. Оно незаменимо при создании сайтов. Начинающие php-программисты найдут здесь ответы на многие вопросы: как написать первый скрипт, подключиться к своей базе данных, динамически формировать страницы сайта. Опытным разработчикам будут весьма интересны разделы о защите информации сайта, взаимодействии с базами данных, мультимедиа, XML, а также расширенных возможностях и особенностях настройки PHP.

8. Разработка веб-приложений с помощью PHP и MySQL

Люк Веллинг, Лаура Томсон

Исчерпывающее учебное пособие по разработке веб-приложений, управляемых базами данных, с использованием PHP и MySQL! Эта книга предназначена для тех, кто знаком с основами HTML и ранее разрабатывал программы на современных языках программирования, но, возможно, не занимался программированием для Веб или не использовал реляционные базы данных.

В ней подробно описано применение последних версий PHP и MySQL для построения крупных коммерческих Web-сайтов. Основное внимание в книге уделено реальным приложениям. Здесь рассматриваются как простые интерактивные системы приема заказов, так и различные аспекты электронных систем продажи и безопасности во взаимосвязи с созданием реального Web-сайта. Подробно описаны все стадии разработки множества типовых проектов на PHP и MySQL, в числе которых служба веб-почты, приложение поддержки Web-форумов и электронный книжный магазин. Заслуживают особого внимания главы, посвященные объектно-ориентированному программированию на PHP, динамической генерации документов, доступу к веб-службам с помощью XML и SOAP и созданию приложений Web 2.0 с помощью Ajax.

Основное отличие этого издания от предыдущего состоит в том, что материалы и весь исходный код полностью переписаны для новых версий PHP 5.3 и MySQL 5.1. Книга ориентирована на профессиональных разработчиков, но будет полезной и начинающим.

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

В книге продемонстрировано, как эти два инструмента используются для создания высокоэффективных и, в то же время, интерактивных веб-приложений. Здесь представлено исчерпывающее описание языка PHP, а также рассмотрены вопросы настройки и работы с базами данных MySQL и особенности взаимодействия PHP-сценариев с базами данных и серверами.

В эту практическую, изобилующую реальными примерами книгу включено множество приложений, на основе которых демонстрируется решение общих задач: методика аутентификации посетителей на сайте; разработка полнофункциональной покупательской тележки; динамическая генерация изображений и PDF-документов; отправка и обработка электронной почты; организация дискуссионных форумов; подключение к веб-службам с использованием XML и разработка приложений Web 2.0 с интерактивностью, обеспечиваемой Ajax.

Четвертое издание книги претерпело существенные изменения — весь материал был тщательно пересмотрен и дополнен, и теперь он полностью соответствует новым версиям PHP 5.3 и MySQL 5.1.

9. PHP. Создание динамических страниц

Дэвид Пауэрс

Язык РНР сочетает мощь и простоту. Эти качества сделали его выбором №1 для миллионов разработчиков сайтов. Учитывая, что всем им приходится иметь дело с одними и теми же, по сути, задачами, авторы этой книги собрали под одной обложкой готовые решения для самых распространенных случаев: от управления файлами до работы с базами данных.

Эта книга подходит как для новичков, так и для опытных программистов РНР, поскольку здесь на практических примерах разбираются проблемы, с которыми часто сталкиваются веб-разработчики.

10. PHP и MySQL. Исчерпывающее руководство

Бретт Маклафлин

Если у вас есть опыт разработки сайтов с помощью CSS и JavaScript, то эта книга переведет вас на новый уровень — создание динамических сайтов на основе PHP и MySQL. Благодаря практическим примерам в книге вы узнаете все возможности серверного программирования. Вы прочитаете, как выстраивать базу данных, управлять контентом и обмениваться информацией с пользователями, применяя запросы и веб-формы. — Написание PHP-сценариев и создание веб-форм.

Мастер Йода рекомендует:  Интервью с Денисом Неклюдовым, Google Developer Expert Android

Подпишитесь на мой телеграм и первыми получайте новые материалы, в том числе которых нет на сайте.

Подпишитесь на рассылку
Один раз в месяц все новые материалы в одном письме

200 бесплатных наборов кистей для Фотошопа
387

Как в Фотошопе сменить русский язык на английский
193

25 лучших шаблонов для создания интернет-магазина на OpenCart
162

Как быстро наполнить сайт на WordPress с помощью плагина WP All Import
154

5 лучших книг по Вордпресс на русском языке
152

Как открыть *.CDR в Adobe Illustrator
146

Как быстро удалить все исходящие заявки в друзья во Вконтакте
138

Как отправить большое видео в Ватсап
133

10 рекомендуемых книг-бестселлеров по PHP
121

20 лучших шаблонов Вордпресс для сферы услуг
113

Как скачать приватное видео из фейсбука
100

Как импортировать большую базу данных MySQL в обход ограничений phpMyAdmin
98

Как использовать Media Query в JavaScript
88


Установка временнОй зоны в PHP
85

Как включить мультисайт и создать сеть сайтов на Вордпресс
85

20 лучших Вордпресс шаблонов для образовательных сайтов
65

10 бесплатных шаблонов лендингов в PSD
64

Как разрешить загрузку SVG и других форматов файлов в Вордпресс?
62

Как проверить сайт на технические ошибки онлайн
59

Подключаем цели Яндекс Метрики к WordPress Contact Form 7
58

Практикующий веб-разработчик, специализируюсь на платформе Вордпресс.

Дайте совет по организации сайта, использовать MySQL для статей?

WebPHPDev

Новичок

Дайте совет по организации сайта, использовать MySQL для статей?

Планируется сайт с огромным количеством статей (счёт идёт на сотни тысяч).
Вопрос в том где эффективнее и продуктивнее хранить тексты статей.
«По старинке» я делал это в отдельной папке (там структура по директориям), как надо отобразить статью делаю что-то типа:

и вывожу статью. Вот и думаю, а насколько «гиблая» такая архитектура сайта?

Может быть имеет смысл полное содержание статей хранить в MySQL? Но не будет ли тормозить база данных из-за таких объемов данных?
Если одна статья занимает под 30-60 кб умножив на 100 тысяч статей это уже весомо получится для БД.
Либо в БД хранить только ссылку на ту же «folder/. /nuzhaya-statiya.html» и не хранить сам контент..

Честно говоря, в замешательстве, какой именно путь разработки выбрать. Как сейчас проектирует подобные проекты прогрессивное человечество?
Какие наиболее явные преимущества/недостатки этих подходов?

Спасибо большое за внимание.

Фанат

oncle terrible

boombick

boombick.org

Krishna

Продался Java

Alexandre

PHPПенсионер

WebPHPDev

Новичок

Спасибо за ответы!

Alexandre
Всмысле виртуальные пути? Т.е. хранить поле с путем типа: «folder/. /nuzhaya-statiya.html», а физически файл держать на файловой системе в виде отдельного файла?
Или ты просто о ModRewrite?

Фанат
Почему всё равно? А время затрачиваемое на постоянное обращение к файловой системе? В БД это всё же оптимизировано..

Фанат

oncle terrible

boombick

boombick.org

WebPHPDev

Новичок

Фанат

oncle terrible

Ты такого вопроса НЕ ЗАДАВАЛ.
Ты спрашивал — «где эффективнее и продуктивнее».
С точки зрения эффективности и продуктивности там настолько нет никакой разницы, что заметить её невозможно.

База данных не для того придумана, чтобы обогнать файловую систему в 10 раз. А для удобства.

Преимуществ у БД — масса.
Но только если ей пользоваться.
Если тупо хранить текст, то преимуществ немного.
А вот если делать минимально реляционную структуру, где отдельно буду учитываться авторы, отдельно — просмотры, отдельно — рубрики (причем если статья будет относиться одновременно к двум-трем — как ты это сделаешь на файлах?) — в этих случаях БД предоставит несравнимые преимущества.

А в том вопросе, который ты задал — откуда дергать удобнее — смысла ноль. Особенно — в плане «оптимизации». Самый дурацкий вопрос

WebPHPDev

Новичок

Фанат
Спасибо большое за развёрнутый ответ!
Решено делать это всё в БД. Вопрос снят.

Ещё вопрос параллельный появился.. А вот скажите пожалуйста, а по нагрузке на сервер какой вариант будет менее грузным?
Мне почему-то кажется, что вариант с БД будет грузить сервер сильнее. Поскольку размер статей большой, БД следит за всякими ключами, структурами, да и так как размер статей велик, то делать мускулу это будет сложнее и сложнее по мере нарастания статей.. А вариант с хранением файлов на файловой системе в открытом виде (понимаю, что и БД хранит на ФС инфу), да ещё если категоризировать по папкам вида: «data/год/месяц/article.html» будет гораздо меньше давать нагрузки при работе..(отображении)

Что думаете по этому поводу?
Хостер ругается за чрезмерную нагрузку на сервер, хочется оптимизировать всё же как-то свои скрипты. Вот и начинаешь перебирать варианты, в том числе и такие..

Все, что вам нужно знать, чтобы начать работать с MySQL

Russian (Pусский) translation by Ilya Nikov (you can also view the original English article)

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

Введение

При постоянном расширении веб-приложений и веб-сайтов, управляемых пользователем, появляется необходимость иметь способ хранения данных в
организованном виде, при этом данные можно получить и манипулировать ими «на лету»; что невозможно при статическом контенте.
Для этого необходимо использовать базу данных!
Базой данных в ее простейшей форме является огранизованный сбор данных, независимо от того, используется ли шкаф для хранения документов или компьютеризированную базу данных.
Интеграция базы данных на ваш веб-сайт или веб-приложение позволяет хранить и извлекать данные с помощью определенных команд.
В этой статье мы будем использовать систему управления реляционной базой данных MySQL.
Это программное обеспечение с открытым исходным кодом, доступное в соответствии с общедоступной лицензией GNU, которое, конечно же, делает его бесплатным!
Веб-сайт MySQL можно найти по адресу http://www.mysql.com/. Все что вы видите в этой статье, указывает на функцию MySQL, вы можете найти полную документацию по этим функциям на веб-сайте MySQL.

СОВЕТ. Чтобы выполнить поиск на веб-сайте MySQL по определенной функции, просто добавьте имя этой функции в URL-адрес MySQL. НАПРИМЕР. http://www.mysql.com/SELECT, этот пример будет искать select.

Я создал модифицированную версию поискового буклета Jesse Ruderman для поиска документации MySQL 5.1. Чтобы использовать его, просто выделите подчеркнутое слово, затем нажмите букмарклет, чтобы перейти к результатам поиска. В качестве альтернативы запустите букмарклет ничего не выделяя, чтобы получить окно подсказки с просьбой ввести то, что вы хотите найти.
Закладка:> MySQL SEARCH

Понимание базы данных

Чтобы хранить данные в базе данных, сначала необходимо создать базу данных. Затем эта база данных может хранить множество таблиц (представьте, что в шкафу хранения хранится много файлов); каждая таблица должна иметь определенные столбцы, и эти столбцы создаются для хранения определенных данных (представьте форму ввода данных). Можно ограничить то, что может быть введено в них, например числовые данные или ограничения символов.
После того, как данные будут введены в базу данных, они будут сохранены в соответствующей таблице, тогда таблица будет состоять из строк и столбцов, похожих на таблицу, поскольку данные сохраняются и отображаются в табличной форме. MySQL может управлять несколькими базами данных, которые могут содержать несколько таблиц. Уровни доступа могут предоставляться различным пользователям для предоставления или отзыва определенных привилегий.
MySQL использует команды/функции на основе SQL (язык структурированных запросов). Это позволяет нам использовать ключевые слова, чтобы указать, какие данные мы хотим вернуть. Затем MySQL реализует некоторые дополнительные функции для улучшения доступных функций. Ключевые слова, как правило, легко понять и часто связаны с английским словом или фразой (например SELECT, UPDATE, WHERE).

Приступаем к работе

В этой части мы рассмотрим:

  • Установка MySQL на ваш локальный компьютер (windows)
  • Настройка локальной установки MySQL (windows)
  • Подключение к локальной базе данных
  • Подключение к удаленной базе данных
  • Ввод и форматирование запросов
  • Форматирование и протоколирование результатов
  • Резервное копирование базы данных
  • Восстановление базы данных

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


Сегодня мы будем использовать пакет Essentials, который доступен на веб-сайте MySQL по адресу http://dev.mysql.com/downloads/.
На момент написания этой статьи, текущей стабильной версией была 5.1, и я расскажу, как ее установить в операционной системе Windows. Сначала найдите нужное программное обеспечение, я буду использовать 64-битную версию Windows, но вы можете выбрать другую в зависимости от архитектуры вашей системы. Для этой статьи я решил использовать пакет Essentials, поскольку он включает в себя все необходимые функции. Вы можете сравнить различия между версиями windows по адресу http://dev.mysql.com/doc/refman/5.1/en/windows-choosing-package.html.

Установка MySQL на локальную машину

После того как вы загрузите соответствующий исполняемый файл установки, запустите его, и вам будет предложено вывести это окно. Как вы видите, я устанавливаю версию 5.1.30. Нажмите «Далее», чтобы перейти к следующему экрану.

Я решил сохранить типичную установку, но не стесняйтесь выбирать, какие компоненты вы хотите установить. Вам понадобятся сервер MySQL и файлы данных, если вы работаете на своей локальной машине; однако, если у вас есть доступная вам удаленная база данных, которую вы хотите использовать, вы можете не устанавливать эти функции. Вам понадобится оболочка командной строки MySQL, так как это приложение, которое мы будем использовать. Опять же, если вы не используете локальную базу данных, вы можете пропустить утилиты командной строки и конфигурацию экземпляра сервера. Эта статья не будет охватывать использование C и MySQL, однако, если вы работаете на C, вы можете установить ее. Нажмите «Далее», чтобы перейти к следующему экрану.

Затем вас попросят подтвердить ваш выбор, нажмите «Установить», если вы согласны, иначе нажмите «Назад», чтобы внести какие-либо изменения.

Будет запущена ваша установка, на этом этапе вы можете получить уведомление от антивируса или управления учетными записями пользователей Windows Vista, в нем указывается, что программа просит установить или получить доступ к определенным файлам. Это будет подписан MySQL AB; это компания, которая работает и поддерживает MySQL, о котором вы можете прочитать на http://www.mysql.com/about/.

После установки убедитесь, что сервер MySQL настроен (если установлен), и нажмите «Готово». Поздравляем, вы успешно установили MySQL Server / components. Затем должен загрузиться мастер настройки экземпляра сервера MySQL. Однако, если он не запускается, не волнуйтесь, вы можете получить к нему доступ в папке программ MySQL (если установлена).

Настройка локальной установки MySQL

Теперь мы настроим вашу установку (если вы установили сервер), нажмите «Далее», чтобы перейти к следующему экрану.

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

Я выбрал это как машину для разработки; однако вы можете выбрать, какой вариант вы предпочитаете. Машина для разработки содержит полный функицонал, но это предотвратит использование слишком большого количества ресурсов. Нажмите «Далее», чтобы перейти к следующему экрану.

Поскольку эта установка предназначена для целей разработки, а не для конкретного проекта, я выбрал многофункциональную базу данных, которая позволяет использовать механизм хранения InnoDB и MyISAM. Подробнее о механизмах хранения можно узнать по адресу http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вы должны выбрать, где вы хотите хранить файл данных InnoDB, в зависимости от имеющегося у вас пространства для хранения, которое вы, возможно, захотите изменить, если у вас есть большая емкость или более быстрый диск. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вы должны настроить количество одновременных подключений, которые вы собираетесь подключать к своей базе данных в любой момент времени. Выбор DSS позволяет до 100 подключений, но предполагает в среднем 20 одновременных подключений. OLTP поддерживает до 500 одновременных подключений. Однако для нашей машины для разработки мы часто используем только одно соединение; поэтому я установил ручную настройку на 5. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вам предоставляется возможность настроить параметры TCP/IP. Я убрал галочку, чтобы отключить этот флажок. Отключив это, он предотвращает удаленные подключения к базе данных. Затем вы можете установить режим сервера, я оставил этот флажок (вы можете подробнее узнать о режимах сервера по адресу http://dev.mysql.com/doc/refman/5.1/en/server-sql-mode.html) , Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь нам нужно выбрать, какой набор символов/ кодировку мы будем использовать. Я выбрал UTF8, поскольку она позволяет вводить символы на разных языках. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вам нужно решить, хотите ли вы запускать сервер в качестве службы, вы можете настроить имя службы в раскрывающемся списке. Установив MySQL как службу по умолчанию, сервер будет запущен автоматически и перезапустится даже с ошибкой. Я рекомендую использовать приведенную выше настройку. Вы также можете включить файлы MySQL Bin в путь windows. Это позволяет нам вызывать MySQL непосредственно из командной строки, я также рекомендую это сделать. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь вы должны указать пароль для учетной записи root. Это учетная запись «master» с полными привилегиями (имя пользователя учетной записи будет «root»); Я не рекомендую оставлять его пустым! Выбор для включения доступа к корневым машинам по умолчанию отключен; Я сохранил его таким образом, так как отключил настройки TCP/IP, но он также открывает более высокий риск для безопасности, если детали попадают в чужие руки. Я также отключил выбор, чтобы включить анонимную учетную запись, поскольку эта база данных предназначена для личного использования. Нажмите «Далее», чтобы перейти к следующему экрану.

Теперь ваша конфигурация установки готова к применению, нажмите «выполнить», чтобы запустить процесс.
Затем вы получите сообщение об успешном конфигурировании. После завершения нажмите кнопку завершения, чтобы выйти из этого мастера. Теперь вы успешно завершили настройку.
Если вы устанавливаете MySQL в другой операционной системе или хотите взглянуть на официальную документацию, то ее можно найти по адресу http://dev.mysql.com/doc/refman/5.1/en/installing.html.

Подключение к локальной базе данных

Теперь, когда у вас установлен сервер, мы можем подключиться к нему!

Я собираюсь использовать Windows CLI (интерфейс командной строки) для инициализации соединения, но вы можете использовать MySQL CLI, найденный в папке программ MySQL.
Сначала откройте командную строку, открыв диалоговое окно запуска, которое находится в меню «Пуск», затем введите CMD и нажмите [ENTER]; под котором вы увидите окно, подобное приведенному ниже.

Первая команда, которую мы собираемся ввести, будет подключаться к серверу с нашим именем пользователя и паролем.
Существует несколько способов подключения к серверу, все из которых выполняют одну и ту же задачу.
Команда соединения MySQL использует следующий синтаксис:

Каждый из этих аргументов может быть передан команде mysql следующим образом:

  • —host=host или -hhost
  • —port=port или -P
  • —username=username or -uusername
  • —password=password or -ppassword
  • база данных задается просто как строка (например db_name)

Примечание. Если вы печатаете строку пароля так, то она будет видна на экране, если вы предпочитаете, вы можете просто предоставить команду -p или -password без пароля, который будет представлен со скрытой подсказкой ввода пароля. Нам также не нужен командный терминатор, поскольку мы вводим в CLI Windows на данный момент не MySQL.

Так как мы хотим подключиться к нашему локальному компьютеру, так что мы можем исключить аргумент host (см. соединение с удаленным хостом позже в этой статье). Мы хотим войти в нашу учетную запись root, чтобы получить полные привилегии, поэтому нам понадобятся наши имя пользователя и пароль; поскольку в настоящее время у нас нет каких-либо баз данных, мы также не будем указывать аргумент базы данных.
Я буду подключаться к учетной записи пользователя root на моей локальной машине с паролем «secret», используя следующую команду:

Эта команда соединится с MySQL с использованием пользователя root и паролем secret. Следующие команды достигнут того же результата.

Учетная запись пользователя «root» — это основная учетная запись MySQL, которая была создана во время установки; это тот же пользователь, с которым вы должны подключаться. Однако имейте в виду, что не рекомендуется оставлять учетную запись root, включенной при веб-установке, для получения дополнительной информации см. Учетные записи пользователей и привилегии на веб-сайте MySQL. (http://dev.mysql.com/doc/refman/ 5.1 / о / добавления-users.html)

Подключение к удаленной базе данных

(пропустите это, если вы подключаетесь к локальной базе данных). Чтобы подключиться к вашей удаленной базе данных, часто предоставляемой хостинг-провайдером, вы должны знать IP-адрес или имя хоста вашей базы данных (и, возможно, номер порта, если он был изменен от значения по умолчанию — 3306). Вы будете подключаться к такой базе точно так же,как если бы вы подключались к локальной базе данных, просто заменяя аргументы хоста и порта в зависимости от конфигурации вашего хостинга.

Закрытие соединения

Чтобы отключиться от сеанса MySQL, отправьте команду QUIT (или \ q).

Форматирование запросов и результатов

Теперь, когда мы подключены (после получения сообщения «Welcome to the MySQL monitor.»), мы готовы отправить наши команды, но сначала есть еще несколько замечаний.

MySQL позволяет использовать пробелы, не влияя на введенные команды. Это пригодится, чтобы сделать наши запросы максимально читаемыми (см. изображение ниже). Оба этих запроса дают одинаковый результат, однако второй значительно легче читать.

Примечание. Этот запрос не будет работать, поскольку у нас нет базы данных, установленной для демонстрационных целей!
Вы можете увидеть код, который я использовал ниже, оба введенных запроса идентичны, но нажав [ENTER], CLI позволяет нам продолжать команду на отдельной строке. MySQL реализовал функцию отмены ввода, если ваша команда охватывает несколько строк, просто выпустите команду clear «\ c».

Это, однако, также означает, что необходимо отправить специальную команду, чтобы указать, что это конец команды. Мы можем использовать одно из следующих:

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

Восстановление базы данных

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

Мы собираемся использовать предварительно подготовленную базу данных, доступную по адресу http://dev.mysql.com/doc/#sampledb, прокрутите вниз до тех пор, пока вы не увидите примеры баз данных, и вы хотите продолжить и загрузить базу данных world.

После подключения к MySQL мы собираемся восстановить базу данных world, так как это резервная копия предыдущей базы данных. Этот файл представляет собой просто список команд MySQL, которые будут запускаться для создания новой базы данных. Этот файл SQL содержит только данные таблицы и не сохраняет информацию о базе данных, поэтому мы должны сначала создать базу данных для хранения таблиц (см. Аналогию в начале статьи).
Примечание. Чтобы эта статья не стала слишком длинной, я буду размещать несколько команд в фрагментах кода, вы можете разделить эти команды или собрать их вместе для поиска завершающих команд, показанных ранее в этой статье. Также имейте в виду, что функции MySQL не чувствительны к регистру, поэтому SELECT — это то же самое, что и select и SeLEcT. Я лично использую функции MySQL, чтобы сделать мои запросы максимально простыми, поскольку запросы становятся длиннее и сложнее.

Чтобы создать базу данных, которую мы собираемся вызвать команду CREATE DATABASE, после создания мы будем использовать USE базу данных.

Время импортировать резервную копию, есть много способов сделать это (http://dev.mysql.com/doc/refman/5.0/en/batch-commands.html). Поскольку мы уже подключены к MySQL, мы будем использовать команду SOURCE, за которой следует наше имя файла. Я извлек файл «world.sql» из папки zip и поместил его в свой корневой каталог C: вам нужно знать абсолютный путь к исходному файлу. Если вы укажете только свое имя файла, то MySQL будет искать источник в папке, в которой вы запустили свою командную строку (C:\USERS\USERNAME на vista C:\Documents and Settings\Username
на XP). Вы не можете перейти в другой каталог, используя интерфейс MySQL, поэтому убедитесь, что вы предоставили соответствующий абсолютный путь. После выдачи этой команды окно CLI выдает каждую из команд в файле SQL, после завершения вы будете возвращены в приглашение mysql>.

Теперь у вас есть полностью функциональная база данных. Однако мы еще не знаем, что она содержит! Давайте немного поизучаем ее содержимое; мы будем использовать следующие команды:

  • SHOW TABLES; — это показывает таблицы в текущей базе данных.
  • DESCRIBE tbl_name; — это показывает, какие поля существуют в указанной таблице.

После выдачи команды мы теперь знаем, что база данных содержит три таблицы: «city», «country» и «countrylanguage». Затем мы узнаем, какие поля хранятся в этих таблицах. Для каждой из таблиц выполните DESCRIBE tbl_name .

После выдачи команды DESCRIBE для таблицы country вы увидите, что она вернула нечитаемый беспорядок, чтобы решить эту проблему, просто используйте терминатор \G вместо;.

Теперь у нас есть вся информация, которая нам нужна для управления таблицами по своему желанию, у нас есть имя пользователя, пароль, имя базы данных, имена таблиц и имена полей, если вы работаете на другом языке, таком как PHP, это информация вам потребуется чтобы получить эти данные в вашей системе (см. http://php.net/mysql).

Логирование результатов

Мы можем выбрать логирование вывода MySQL-интерфейса; мы делаем это, отправив команду \T filename.txt. Чтобы остановить ведение журнала, мы выдаем команду \t. В приведенном ниже примере сохраняется файл с именем log.txt в корневой каталог жесткого диска E:. На моей машине это запасной жесткий диск, обратите внимание, что у вас должно быть разрешение на доступ к этому диску; вы не сможете записать данные в корень на установочном диске Windows в Windows Vista без запуска MySQL из командной строки с повышенными правами.

Резервное копирование базы данных

Монитор MySQL поставляется с расширением mysqldump; так как вы могли бы ожидать эта команда делает дамп из базы данных, чтобы иметь возможность сделать точную копию. Команда mysqldump использует следующий синтаксис:

Мастер Йода рекомендует:  Как отменить последний Git-коммит

Чтобы запустить это, вы должны быть отключены от сеанса MySQL.

Следующий код логируется в сеанс MySQL с учетной записью пользователя root с паролем secret, затем он выгружает таблицу db_world в файл db_worldbak.sql.

Заключение

Прочитав эту статью, я надеюсь, что вы получили четкое представление о том, как взаимодействовать с mysql на уровне командной строки. То, что может оказаться полезным в качестве команд, может быть отправлено непосредственно в базу данных MySQL, а не через другой язык сценариев. Пожалуйста, не останавливайтесь здесь, http://dev.mysql.com/doc/ действительно отличный ресурс, и вы никогда не будете создавать свою собственную базу данных. Ниже я написал для вас несколько базовых запросов для поиска в базе данных world и некоторые примеры. Посмотрим, сможете ли вы их понять, если вы еще не знаете, где находится документация.

На английском языке этот запрос SELECT и возвращает Name и Population FROM таблицы city WHERE код страны является GBR, результаты затем фильтруются с использованием ORDER BY Population ASC (возрастающая популяция) и затем LIMIT, чтобы вернуть первые 5 результатов. Этот запрос показывает название и население 5 наименее населенных городов Великобритании.

На английском языке этот запрос SELECT данные, он CONCAT Name из таблицы city и Language из таблицы countrylanguage и отображает результаты AS Detail запрос также SELECT Population из таблицы city. Снова этот запрос SELECT свои данные FROM таблицы city и таблицы countrylanguage, он возвращает данные, в которых код страны города совпадает с кодом страны на языке страны. Данные отфильтровываются, чтобы отображать страны, WHERE код страны — это GBR, AND язык — английский, затем он ORDER BY возрастающей численности населения, а результаты LIMIT, чтобы показать результаты от 6 до 10. Этот запрос известен как INNER JOIN, поскольку две таблицы связаны между собой в запросе. Этот запрос отобразит 6-ю по 10-ю наименее населенные города с кодом страны GBR, в которых оворят по-английски.


Как я узнал, какие данные нужно писать для этих запросов? Запустив следующий запрос SELECT, он использует символ wild card, чтобы выбрать все поля и вернуть все данные в указанной таблице. Из результата запроса я понял, что было включено, и я сделал некоторые сценарии, которые я хотел запросить.

Вот несколько функций, которые вы можете посмотреть более подробно, чтобы начать работу:

Следите за последующим руководством по извлечению и обработке данных. Не стесняйтесь задавать любые вопросы в комментариях, и я сделаю все возможное, чтобы ответить на них. Убедитесь, что вы начали свой вопрос с #Q, чтобы я мог их найти!

  • Подпишитесь на RSS-канал NETTUTS для получения других ежедневных статей по веб-разработоке.

20 советов и трюков для всех, кто занимается разработкой под MySQL PHP

Создаем сайт для работы в Интернете

  1. Причины создания пошаговой инструкции по разработке самописного сайта
  2. Тема создаваемого сайта
  3. В чем будет заключаться монетизация
  4. Функционал
  5. Этапы создания
  6. Текущее состояние создаваемого сайта

Здравствуйте уважаемый посетитель!

Наверное, многие задаются вопросом, как можно самому создать сайт для работы в Интернете или просто для реализации своих интеллектуальных способностей.

Причем чтобы такой сайт был создан не в стандартном исполнении на основе какой-нибудь бесплатной СMS, а заточенный под себя, с возможностью обеспечить ему должную безопасность и реализовать все свои индивидуальные потребности.

Данный сборник статей и предназначен для того, чтобы показать на реальном примере, как можно самому с нуля создать интернет-ресурс, который в последствии можно использовать в качестве инструмента для своей работы.

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

Следует к этому добавить, что при желании, после получения необходимых знаний и навыков в вопросах сайтостроения, вполне возможно заняться и созданием сайтов на заказ. Тем более, что эта работа очень интересна и достаточно хорошо оплачиваемая. И что немаловажно, ее можно выполнять удалено, занимаясь в любое время не выходя из дома. Для этого нужно всего лишь одно условие — подключение к сети Интернет, что в наше время не является какой-либо проблемой.

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

Самописный сайт своими руками!

Здесь можно посмотреть текущее состояние самописного сайта, который создается для работы в Интернете в рамках цикла статей Как сделать сайт.

Где в дополнительных материалах можно бесплатно скачать исходные файлы сайта с таблицами MySQL.

Вы здесь: Главная → Сборник статей → Работа с базой данных MySQL

Перечень статей раздела Работа с БД MySQL:

Создаем базу данных MySQL

  • Зачем нужна база данных
  • Что из себя представляет база данных MySQL
  • Создаем базу данных на локальном веб-сервере Denwer
  • Создаем базу данных на хостинге

Здравствуйте уважаемый посетитель!

Прежде чем приступить к очередной теме создания сайта, хочу извиниться за задержку в написании статей. Но, как говорится, причина уважительная, так как связанно это было с работой по другим важным проектам. Надеюсь, в дальнейшем, дела насущные позволят мне рассмотреть все основные заявленные вопросы по развитию сайта в штатном режиме, с периодичностью 1-2 статьи в неделю.

Этой статьей начинается следующая часть сборника «Сделай сайт с нуля своими руками», которая в основном будет направлена на развитие и оптимизацию сайта, наполнение его контентом и необходимым функционалом.

А для того, чтобы в дальнейшем иметь возможность полноценно развивать сайт нам будет не обойтись без рассмотрения такого важного вопроса, как работа с базой данных MySQL (в дальнейшем для обозначения базы данных MySQL будет также встречаться аббревиатура «БД»).

В данной статье мы создадим базу данных на локальном веб-сервере Denwer и на хостинге, на котором размещен наш сайт.

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

Подключаем базу данных MySQL с использованием процедурного и объектно-ориентированного стиля MySQLi

  • Общие вопросы по подключению к БД
  • Отличие в подключении к БД на локальном веб-сервере и на хостинге
  • Подключение к базе данных с использованием процедурного интерфейса
  • Подключение к базе данных объектно-ориентированным стилем
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!

Сегодня будем заниматься подключением базы данных MySQL, которую создали в прошлой статье, через PHP с помощью современного модуля MySQLi. Особенность этого расширения в том, что в отличие от устаревшего MySQL, оно поддерживается всеми актуальными версиями PHP, включая последнюю 7.0.

Причем делать это будем двумя вариантами, используя, как привычной процедурный интерфейс (наподобие функций, которые использовались в старом расширении MySQL), так и объектно-ориентированный стиль взаимодействия с MySQL.

Оба эти варината рабочие, а каким пользоваться, может каждый выбрать для себя самостоятельно, кому какой будет удобнее.

Создаем таблицы MySQL c помощью phpMyAdmin, SQL-команд и в PHP

  • Определение основных параметров создаваемой таблицы
  • Создание таблицы с помощью интерфейса phpMyAdmin
  • Создание таблицы с помощью SQL-запросов
  • Создание таблицы MySQL в PHP
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!


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

В данной статье будут рассмотрены три возможных способа создания таблиц MySQL, а именно: с использованием интерфейса phpMyAdmin, c помощью SQL-запросов, а также используя модуль MySQLi PHP.

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

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

При этом следует отметить, что наиболее часто из перечисленных способов используется первые два — с использованием интерфейса phpMyAdmin и c помощью SQL-запросов. Причем первый из них, на мой взгляд, более удобен для небольших таблиц. А использование SQL-запросов, наверное, можно оставить для создания более сложных, с большим количеством полей.

Третий способ — через PHP, встречается значительно реже, в основном, при необходимости создания таблиц программно, при выполнении каких-либо алгоритмов.

Также следует учесть, что порядок создания таблиц MySQL на локальном веб-сервере Denwer аналогичен и, практически, ничем не отличается от тех процедур, которые выполняются на хостинге. Поэтому, все выполняемые здесь действия будут проводиться на локальном веб-сервере. Повторения же подобных операций на хостинге рассматриваться не будет.

Наверное, такой значительный объем материала следовало бы разбить на три отдельных статьи. Но, собранная информация по этой теме в одном месте, думаю, будет более удобна для ее использования.

Вводим и копируем данные в БД MySQL с помощью phpMyAdmin

  • Ввод данных в таблицу с помощью интерфейса phpMyAdmin
  • Создание копии таблицы MySQL на локальном веб-сервера
  • Импорт таблицы MySQL в БД хостинга
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!

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

Что же касается ввода данных на хостинге, то в этом случае все действия аналогичны. Поэтому отдельного такого рассмотрения для хостинга не имеет смысла и в статье не предусмотрено.

Вместо этого, мы выполним довольно полезную операцию копирования таблиц MySQL из БД локального веб-сервера в БД хостинга и наоборот. Причем сделаем это наиболее простым способом, используя все то же приложение phpMyAdmin.

Такая процедура довольно удобна для сохранения данных MySQL, так как этим способом можно копировать не только определенные таблицы, но всю базу данных. А при наличии копии сайта на локальном веб-сервере, такая возможность существенно упрощает отладку и техническую поддержку действующего сайта.

Записываем данные MySQL с использованием SQL-запросов

  • Формирование SQL-запроса
  • Выполнение SQL-запроса в phpMyAdmin
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!

Сегодня, в отличие от предыдущей статьи, будем записывать на локальном веб-сервере аналогичную информацию в таблицу MySQL не в ручную в веб-приложении phpMyAdmin, а с помощью специальных команд на языке SQL (SQL-запросы).

Что же касается записи данных в БД на хостинге, то в этом случае все действия аналогичны. Поэтому отдельного рассмотрения этих вопросов для хостинга здесь приводиться не будет.

Следует отметить, что все способы по записи данных, которые рассматриваются в этом цикле статей востребованы и применяются в зависимости от требуемых задач.

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

А, если потребуется ввести большое количество данных, составляющее десятки и сотни строк таблицы, то, конечно удобнее будет это сделать не перебирая в ручную все ячейки строк, а выполнить соответствующую команду SQL с предварительно заполненными парамерами.

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

Поэтому, все рассматриваемые здесь способы записи данных хороши каждый по-своему, и каждый способ в какой-то момент может быть использован при работе с базой данных MySQL.

В связи с чем и было решено этим вопросам уделить значительное внимание, чтобы можно было поближе познакомиться с каждым из этих способов на живых примерах.

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

Записываем данные MySQL с использованием PHP

  • Записываем данные одной строки в таблицу MySQL
  • Составляем PHP-скрипт для записи всех строк таблицы
  • Составляем отдельную функцию записи данных в таблицу url_php
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!

В предыдущих статьях мы рассмотрели возможность ввода данных MySQL в веб-интефейсе phpMyAdmin двумя способами — в ручную, записывая информацию в каждую ячейку таблицы и с помощью подготовленного SQL-запроса. Сегодня же рассмотрим еще один вариант, используя для этого PHP.

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

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

Таким образом мы проверим с помощью PHP запись как одиночной строки, так и сразу нескольких за один раз выполнения скрипта.

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

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

Надеюсь, что показанные здесь методы записи данных MySQL будут полезны особенно тем, кто делает только первые шаги в освоении этой довольно важной темы. Ведь умение записывать данные в таблицы MySQL с использованием PHP значительно расширяет возможности работы с сайтом.

Выводим данные из БД MySQL с помощью SQL-запросов

  • Выборка одиночной уникальной строки с заданным условием
  • Получение набора нескольких строк с сортировкой по заданному полю

Здравствуйте уважаемый посетитель!

В предыдущих статьях мы рассмотрели возможность записи данных в БД MySQL тремя разными способами:

  1. в веб-интефейсе phpMyAdmin, записывая в ручную информацию в каждую ячейку таблицы;
  2. с помощью подготовленных SQL-запросов;
  3. программно, используя функции модуля MySQLi PHP, составив для этого соответствующий скрипт.

А, теперь выполним обратные действия, посмотрим, как можно вывести данные из таблицы MySQL с помощью SQL-запросов.

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


Поэтому, здесь мы более подробно остановимся всего лишь на двух, наиболее часто встречающихся в веб-прогаммировании вариантах извлечения данных, а именно: с начала выполним запрос выборки одиночной уникальной строки по заданному условию, а затем получим набор нескольких строк и отсортируем их по одному из полей.

Как ранее отмечалось, работа с базой данных MySQL в phpMyAdmin на хостинге, практически, ничем не отличается от действий на локальном веб-сервере, за исключением порядка входа в веб-приложение с соответствующим аккаунтом.

В связи с чем, вывод данных из БД MySQL здесь будет рассматриваться только для варианта с локальным веб-сервером «Denwer», который используется в нашем случае при создании сайта. Для хостинга будет все аналогично.

Выводим данные из БД MySQL в PHP

  • Вывод одиночной строки (использование одномерного массива)
  • Вывод набора строк по заданному условию (использование двумерного массива)
  • Проверка наличия записи в таблице
  • Исходные файлы сайта

Здравствуйте уважаемый посетитель!

В предыдущей статье мы рассмотрели возможность вывода записей MySQL с помощью SQL-запросов. При этом, результаты отображались на странице веб-приложения phpMyAdmin.

Такой способ получения данных полезен для просмотра содержимого БД MySQL, но явно недостаточен для того, чтобы можно было их использовать для работы сайта. В этом случае, вместо приложения phpMyAdmin, требуются другие инструменты.

В сайтостроении для этих целей обычно используют язык программирования PHP, где с помощью модуля MySQLi данные можно извлекать непосредственно в PHP. А, далее с ними работать как с обычными переменными.

Следует отметить, что наиболее часто встречающиеся PHP-функции, предназначенные для вывода данных из таблиц MySQL, по виду возвращаемого результата можно разделить на три варианта:

  1. когда результатом выполнения SQL-запроса может быть лишь только одна строка;
  2. в случае, если результатом выборки может быть множество строк.
  3. при выполнении запроса на проверку наличия записи в таблице по заданному условию.

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

В варианте со множеством строк на выходе получается двумерный массив, в котором первый ключ определяет порядковый номер строки из набора, а второй — наименования полей.

В случае поверки наличия записи в таблице, функция возвращает значение переменной типа «bool», где «TRUE» — запись существует, «FALSE» — отсутствует.

При этом, на основе приведенных здесь вариантов PHP-кода можно получать различные функции под конкретные задачи, меняя для этого лишь текст SQL-запроса и соответствующие параметры.

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

Таким образом, мы рассмотрим наиболее часто используемые варианты PHP-функций, предназначенных для вывода данных MySQL, и с помощью соответствующих PHP-скриптов перенесем полученные результаты на на экран браузера.

Жизнь после MySQL: выбираем замену для популярной СУБД

Содержание статьи

Что будет теперь, когда ненавистная и даже глубоко противная истинным сторонникам открытого софта компания Oracle купила многострадальную Sun, а заодно и наш с тобой любимый MySQL? Конец легендарного продукта? Может быть. Но уже сейчас есть куда более функциональные и полностью совместимые разработки!

MySQL, он же просто «мускул». Бьюсь об заклад, что это единственная СУБД, которая по умолчанию доступна на твоем хостинге. Любимые движки для форума и блога работают на ней. Это фактически стандарт де-факто для любого веб-продукта. Да и в своих проектах ты, вероятнее всего, используешь именно ее. В Сети миллионы сайтов осуществляют запросы и сохраняют данные в БД с помощью MySQL. И все было просто и понятно до тех пор, пока компанию Sun вместе с ее любимым мускулом неожиданно не купила корпорация Oracle. Учитывая, что основным продуктом последней является мощнейшая СУБД с одноименным названием, сообщество сильно тревожилось о дальнейшей судьбе MySQL. И не напрасно. Компания Oracle, конечно же, выступила с заявлением, что все в порядке: проект по-прежнему будет развиваться. Но многим верится в это с трудом. Ведь даже быстрый выпуск версии 5.5, которую многие так ждали, не дал положительных результатов: старые баги как были, так и остались. Разве ж это дело? Но параллельно с оригинальным MySQL уже давно развиваются альтернативные проекты, которые совместимы с оригинальной СУБД, но во многом даже превосходят ее. И об этом мы сейчас и поговорим.

Движок БД — что это такое?

Если немного упростить понятия, то база данных — это обертка вокруг движка хранения данных. Она занимается приемом запросов и управлением ими, кэшированием и прочими обслуживающими функциями, обеспечивая работу с низкоуровневым API движка. Последний, в свою очередь, собственно и хранит данные (на диске или в памяти), работает с операционной системой и обеспечивает выдачу нужных выборок по запросу от сервера. Если раньше СУБД (связка «сервер + движок») была монолитная, то теперь во всех системах используется структура с плагинами. Движок в такой организации является просто модулем, а сам сервер не зависит от системы хранения данных. В последних редакциях классического MySQL также используется плагинная архитектура. Поэтому встроенный движок InnoDB (правда, обычно устаревшей версии) можно легко заменить на модуль другого проекта, который часто будет лучше. В альтернативных мускулу разработках, в том числе MariaDB или Drizzle, все движки изначально выполнены как плагины. Попробую кратко пробежаться по современным движкам хранения данных в MySQL-совместимых СУБД.

  • InnoDB — основной движок для мускула, который с версии 5.5 наконец-то сделали дефолтным. Поддерживает транзакции, репликацию, построчную блокировку. Достаточно устойчив к сбоям.
  • MyISAM — очень проблемный движок, плохо переносящий крах сервера. Не поддерживает транзакции, но зато может похвастаться полнотекстовыми индексами и быстротой работы. Долгое время был стандартным для всех версий MySQL, а потому до сих пор является самым популярным.
  • Aria — замена для MyISAM с поддержкой транзакций и улучшенной работой с памятью. Движок гарантирует целостность данных и при этом не уступает в скорости MyISAM.
  • CVS — специализированный движок на случай, когда требуется хранить и обрабатывать большие массивы строковых данных, разделяемых запятой.
  • Federated/FederatedX — этот движок специализируется на прозрачном разнесении данных по нескольким серверам (физическим) на уровне таблицы.
  • PBXT — призванный заменить InnoDB новый движок, в котором реализованы полная поддержка транзакций, многоверсионность, автоматическая обработка дедлоков. Движок оптимизирован для большого количества одновременных транзакций.
  • Blackhole — служебный движок, представляющий собой, по сути, /dev/null для СУБД и фактически не производящий никаких записей на диск. Используется для репликации.
  • Archive — движок, который максимально быстро работает на запись. Используется в тех случаях, когда необходимо хостить большие массивы данных. Для эффективности хранения используется сжатие, что приводит к медлительности во время выборок. Движок хорошо подходит для долговременного хранения логов и другой служебной информации.
  • XtraDB — расширенная и исправленная в некоторых проблемных местах InnoDB от компании Percona.
  • MERGE — схожий с Federated движок для разнесения данных в одной таблице на несколько разных.
  • MEMORY — движок, использующийся для хранения данных не на диске, а в памяти. Информация из базы доступна только во время работы сервера, но это дает колоссальный прирост в производительности.
  • BlitzDB — еще одна замена для MyISAM с хорошей производительностью за счет встроенного построчного кэширования и автоматического восстановления после сбоев. Движок не поддерживает транзакции.
  • NDB — движок для кластера, обладающий, впрочем, кучей проблем и удручающе плохой производительностью.
  • Falcon — легендарный движок от компании MySQL AB, разрабатываемый еще со времен Sun, когда было принято решение заменить оракловский InnoDB.
  • SphinxSE — полнотекстовый движок от создателя поискового сервера Sphinx. Лучший вариант для полнотекстового поиска и индексации по правилам русского языка. Легко оперирует терабайтами данных, обеспечивая при этом все возможности современной БД.

Важная вещь — совместимость

Итак, мы взялись за непростую задачу — найти замену для MySQL. Но если менять, то на что? Только не беги с криками «Да отстой ваш мускул — бери слона, то есть PostgreSQL». Не выйдет! Сейчас столько кода написано с поддержкой MySQL, что переписать или искать замену — себе дороже. Причем в прямом смысле — часто уложиться в рамки разумных финансовых затрат просто невозможно. Хорошо, если речь идет о простецком форуме или блоге (обычно в них реализована поддержка сразу нескольких систем). Но что если это что-то самописное или заточенное под возможности именно MySQL? Тут все ох как непросто. Так что наша задача — сохранить мускулы (то есть полную совместимость с MySQL), но прокачать их так, чтобы не зависеть от старшего тренера и его стероидов.

Мастер Йода рекомендует:  Как вывести текст как есть в HTML

Разработчики и идеологи самого MySQL далеко не дураки и сами предвидели ситуацию, что после поглощения сложно будет всем. Некоторые из них решили даже покинуть компанию и основать свои проекты, прихватив тогда еще свободные коды мускула. Благодаря этому сейчас есть несколько интересных продуктов, основанных на коде оригинального сервера, но с большими доработками и изменениями во всем, куда только удалось дотянуться разработчикам. Первым делом энтузиасты освободились от бремени движка InnoDB, правами на который уже давно обладает все тот же самый Oracle. На замену ему выкатили несколько движков, которые стали доступными в MariaDB.

Архитектура MySQL — теперь уже как пособие по устройству некогда великой СУБД

MariaDB

История этого сервера уходит в далекий 2008 год, когда один из главных разработчиков MySQL, осознавая, что сильно связан поставленными работодателем рамками, уволился и основал свою компанию, которая занялась исправлением родовых травм MySQL. Я говорю о дефолтном движке MyISAM, который необходимо было менять, и критических багах, на исправление которых уходило неприемлемое количество времени. Что получилось у создателей MariaDB? Замечательный продукт, который на уровне протокола, формата файлов и языка SQL идентичен с оригинальной версией MySQL. Это предоставляет возможность безболезненного перехода: без потери данных или изменения логики работы имеющегося кода.

«Но какие бонусы я получу от перехода?», — спросишь ты. Взамен мы получаем большую скорость работы и новые фичи, которых, возможно, вообще никогда не будет в мускуле. Например, интегрированный в сам сервер поисковый движок Sphinx, который не придется ставить отдельно, расширенные возможности по бэкапу и управлению данными и так далее.

Надо сказать, что многие очень крупные компании (в том числе такие звери, как Google и Facebook) давно используют MariaDB. По сети гуляет специальный набор патчей, которые после наложения на исходные коды оригинального мускула решают многие проблемы. Однако не жди их появления в официальном сервере — если за столько лет не сподобились, то вряд ли в следующей версии решатся. Разработчики MariaDB же пока свободны от корпоративных правил и маркетинговых ограничений, поэтому новые патчи и исправления багов принимаются достаточно быстро.

Если оригинальный мускул держится на двух китах — движках хранения данных InnoDB и MyISAM, то MariaDB использует свои собственные, выступающие продвинутыми заменителями. Движок Aria пришел на замену MyISAM и на деле куда более производителен благодаря построчному кэшированию и оптимизированному формату упаковки данных. Если оригинальный MyISAM был быстр за счет отказа от транзакций, что означало возможную потерю данных, то Aria одновременно и производителен, и безопасен. За счет улучшенных форматов для хранения информации MariaDB существенно быстрее восстанавливается после сбоев, не требуя отдельных процедур проверки данных после краха. Принадлежащий Oracle движок InnoDB заменен на XtraDB, разработку другой компании в области БД Percona. Последняя известна своими сборками MySQL с интегрированными патчами от Гугла и Фейсбука, а также расширенными инструментами администрирования. Команда имеет необычную историю (подробнее ты можешь прочитать во врезке) и сейчас активно занимается созданием нового мускула. Для обратной совместимости с MySQL движок XtraDB в MariaDB даже называется точно так же, то есть InnoDB. Но надо понимать, что на самом деле сохранилось только название, дабы не смущать софт непривычными идентификаторами.

Первым проектом молодой компании Oracle была разработка по заказу разведчиков учетной системы, за которую на конкурсе другие компании запрашивали под $2 000 000, а молодой Ларри Элисон заносчиво указал сумму всего в $300 000. Стоит ли говорить, что проект был провален, зато компания получила стартовый капитал и начала свое восхождение.

Дополнительные движки

Об XtraDB стоит поговорить более детально: по мнению многих специалистов это номер один в мире движок для БД. Более того, он обставляет оракловский InnoDB, как маленького :). Ключевая фича — долгожданная поддержка многоядерных и многопроцессорных систем, чем ну никак не хочет (или не может?) похвастаться MySQL. Патчи от Google давно решили эту проблему, но, как всегда, их не удосужились включить в оригинальный движок, поэтому MySQL с точки зрения производительности плетется далеко позади по любым бенчмаркам. Разработчики XtraDB значительно улучшили стратегию использования дискового I/O, что раньше ограничивало производительность из-за тормозов со сбросом данных на диск из кэша. Соответствующими опциями теперь можно тонко управлять из настроек, что позволяет особо продвинутым админам подтюнить производительность демона самому, не обращаясь к дорогим специалистам по базам данных. Тем более, что из коробки доступна детальная статистика по работе движка, что сводит на нет потребность в дорогом коммерческом софте для анализа производительности базы данных. Нужна лишь одна команда SHOW ENGINE INNODB STATUS . И немаловажный момент — скорость восстановления после сбоя: если уж он и случился, восстановление будет не просто быстрым, а почти реактивным, зачастую до десяти раз быстрее, чем в MySQL. А также множество других мелочей: буферы для записей, адаптивные чекпоинты и увеличенное число открытых транзакций. Все это позволит серверу хорошо чувствовать себя в очень нагруженных условиях.

Если тебе и этого не хватает, и ты киваешь головой в сторону Firebird или PosgreSQL, намекая, что там есть и полная поддержка транзакционной модели и даже MVCC (Multiversion Concurrency Control — конкурентная модель данных на базе версионности, что позволяет без блокировок производить обновление и чтение одной и той же строки данных) — расслабься. В MariaDB доступен движок PBXT, который в некоторых ситуациях еще более крут, чем все вышеперечисленные. Правда, тут сразу стоит сказать, что он не такой универсальный и его нужно уметь готовить! PBXT в основном заточен под большое количество транзакций, которые пишут или изменяют данные, поддерживает быстрый откат и умеет сам разрешать сложные ситуации с блокировками и дедлоками. Например, если хочешь сделать хранилище логов, то у тебя будет огромное количество операций записи в таблицу, но сравнительно мало чтения. В то же время, если кто-то все-таки захочет сделать выборку из БД, он получит максимально свежие данные, не мешая при этом записи новых. И для совсем уж извращенцев есть движок FederatedX, умеющий распределять таблицу данных на несколько физических серверов, а также OQGRAPH, оптимизированный для хранения иерархических структур, графов и деревьев. Подход, идеально подходящий для создания клона Facebook и ВКонтакте, где требуется работать с социальным графом отношений между людьми, что плоховато вписывается в типичную модель баз данных.

Cloud Computing

Разработчики другого проекта — Drizzle — пошли по немного другому пути и решили вообще переосмыслить место базы данных в инфраструктуре типичного проекта. Вспомнили, что сейчас модно: cloud computing, Google Proto Buffers, масштабируемость, многоядерность и прочее. И подумали: база данных также должна двигаться вместе с современными технологиями, а не плестись в конце, вне зависимости от того, что на ней крутится — блоговый движок или крупная корпоративная CRM-система. Под шумок было решено упростить функционал оригинальной MySQL, выкинув тянущиеся из релиза в релиз возможности, которые в действительности мало кому нужны. Система утратила поддержку UNIX-сокетов (это хотя и спорное, но вполне допустимое решение ввиду направленности на облачные среды) и версию для Windows. В Drizzle нет никаких служебных баз и многих других привычных вещей. Но что же тогда есть?

Drizzle благодаря простой микроядерной и плагинной архитектуре умеет многое

А есть архитектура с микроядром, в которое вынесены все основные операции и поддержка протоколов, а также система плагинов, позволяющая расширить систему в любую сторону и на любую глубину. В качестве одной из основных системных компонент используется бинарный протокол от Google — Protocol Buffer. С его помощью описываются как таблицы, так и данные, он же применяется и для репликации. Основной упор в разработке сделан на максимальную поддержку многопоточности и многопроцессорности, так что масштабируемость — это основное достижение разработчиков. Реализована поддержка как стандартного MySQL-протокола, так и собственного варианта — через библиотеку libdrizzle и драйвера для большинства популярных языков, включая Perl, PHP, Python и Lua. При желании можно использовать клиентскую библиотеку и без самого сервера: в этом случае ты получишь эффективный асинхронный доступ к любимому MySQL. Поскольку эта же компания разработала и систему Gearman, то в Drizzle есть встроенная поддержка логирования в распределенной среде, нативное кэширование в memcache и даже такие продвинутые возможности, как репликация через системы сообщений типа RabbitMQ (используется в том числе новомодная технология WebSocket). В качестве основного движка хранения данных в Drizzle используется особая версия InnoDB, значительно переработанная и дополненная набором сторонних патчей. Также доступны движки XtraDB и PBXT. Если первые версии Drizzle основывались на MySQL 5.0, то теперь от оригинальной СУБД осталось немногое. Это почти полностью переписанный код с минимальной оглядкой на бывших родственников. На данный момент разработка Drizzle пребывает в активном состоянии, и к весне планируется первый стабильный релиз.

NoSQL-тренд

Ты наверняка знаешь о новомодном тренде NoSQL. По сути, это отказ от традиционного сервера базы данных с его таблицами и SQL-запросами и уход к самой простой схеме хранения данных «ключ-значение» (key-value). Для реализации последнего часто используются продвинутые типы данных вроде списков/хэшей (в Redis) или, например, формата JSON (в MongoDB). Но что мешает скрестить удава и ежа, используя, с одной стороны, всю мощь и годами отработанную технологию баз данных и их движков, а с другой — упрощенный протокол и отказ от громоздкой прослойки в виде обработки SQL-языка запросов? Суровым наследникам самураев не помешало ничего: японские парни из Yoshinori Matsunobu сделали плагин HandlerSocket, превращающий стандартный движок InnoDB в продвинутое NoSQL-хранилище, не мешая при этом работе обычного SQL. Скорость работы впечатляет: до 750 000 операций в секунду! Неудивительно, что компания Percona сразу же взяла на вооружение этот плагин, включив его в свои сборки сервера. Круто! Но, с другой стороны, как еще если не костылем можно назвать решение, которое имитирует то, что у нормальной БД типа Drizzle реализовано прямо из коробки в силу внутренней архитектуры?

Делаем выводы

Если ты обеспокоен развитием MySQL, тебе не нравится политика Oracle и ты справедливо опасаешься, что завтра тебя обяжут платить за функционал, который еще вчера был бесплатен, посмотри вокруг. Сообщество отреагировало на покупку MySQL как на начало заката технологии, некогда выведшей современный веб на недостижимую высоту благодаря стеку LAMP (Linux-Apache-MySQL-PHP). Ключевые разработчики начали развитие собственных форков, некоторые из которых уже сейчас на голову превосходят старый MySQL. За ними стоят многие знаковые фигуры и открытое сообщество. Сделав все по уму, разработчики умудрились оставить 100% внешней совместимости с приложениями и протоколами. Поэтому все желающие поставить новый сервер не окажутся у разбитого корыта: данные сохранятся, а приложения не придется переписывать. Многие вообще не заметят разницы, кроме возросшей скорости работы и надежности.

Уже сейчас ты можешь заменить свой сервер баз данных, так что имеющиеся приложения даже не почувствуют разницы, получив при этом гораздо большую скорость работы, надежность и массу недоступных в оригинальном мускуле фишек. MariaDB с набором движков — отличный вариант для старта. Ну а если ты задумал грандиозный проект с большим количеством серверов и гигабайтами данных, посмотри на Drizzle. Как программный продукт и как сервер баз данных он является очень перспективной разработкой, которая обязательно выстрелит уже в этом году. Если же хочется стабильности и поддержки самыми лучшими специалистами по базам данных — не бойся отвернуться от Oracle и пойти к Perconа. Ребята раздают бесплатно свою версию СУБД — исправляя, насколько это возможно, баги и добавляя фичи для увеличения производительности оригинального MySQL, не нарушая при этом совместимости. Ты все еще сидишь на стареньком мускуле? Тогда мы идем к тебе!

suhorukov.com

Уж сколько раз хоронили язык PHP, а он живее всех живых. Компании по-прежнему находятся в поисках специалистов по PHP, а юные дарования пробуют себя на ниве сайтостроения.

О том, какие перспективы у языка PHP, что нужно знать и читать начинающим специалистам и чем себя мотивировать, мы пообщались с Валентином Бондаренко, ведущим программистом Центра Технологий Виртуализации Новосибирского Технопарка и преподавателем онлайн курса PHP в IT-Академии Алексея Сухорукова.

Как давно занимаетесь PHP-программированием и почему выбрали именно этот язык?

Программировать начал еще в 8-м классе на языке Pascal. В 2006 году, учась в институте, заинтересовался веб-разработкой и начал изучать язык PHP. Было много самообучения, чтения специализированной литературы, а затем и работа над веб-проектом в компании.

Оправдались ли ваши ожидания относительно перспектив выбранного языка?

Не согласен с теми коллегами, которые принимают PHP-программистов за «второй сорт». Язык сейчас активно развивается, вышла 7-я версия PHP, где реализовано много интересных возможностей объектно-ориентированного программирования. В то же время мы видим, как растет количество сайтов, интернет-магазинов, созданных на PHP.

Соответственно, растет и спрос на PHP специалистов, особенно в связке PHP, Java-Script, HTML, CSS. Поэтому могу с уверенностью сказать, что не разочаровался в своем выборе. Активно развивается PHP-сообщество, появляются новые проекты. Думаю, что в ближайшие лет 5-6 это направление будет очень востребованным.

Какими яркими и интересными проектами занимаетесь вы сейчас в Технопарке?

Мы занимаемся проектом облачных инфраструктур. Например, есть большая компания с разрозненными серверами. Мы объединяем их с помощью облачных технологий и через единый интерфейс вы можете, грубо говоря, одной кнопкой управлять всей своей инфраструктурой. Если говорить о конкретном продукте – это система управления гибридными «облаками». Может использоваться веб-студиями, индивидуальными разработчиками или крупными компаниями, которым необходим вынесенный облачный сервис.

Уже более полугода мы в команде занимаемся этим интереснейшим проектом. Наша команда получила ряд наград, в том числе нас отметили как лучшее инновационное предприятие — стартап 2015 года по результатам конкурса Торгово-промышленной палаты г. Новосибирска.

Есть ли какие-то специальные требования к слушателям онлайн курса PHP?

Желательно знать основы верстки HTML, CSS, чтобы более эффективно осваивать курс. Но если этих знаний не будет, то это не страшно. На первых двух занятиях мы рассмотрим все основные базовые вещи по HTML, CSS. Очень важно будет проводить самостоятельное изучение соответствующей литературы.

Какие именно книги, на ваш взгляд, должны стать «букварем» начинающего PHP-программиста?

Есть фундаментальные книги, которые обязательно должны быть прочитаны. Это Д.Скляр, А. Трахтенберг «PHP Рецепты программирования», настольная библия PHP-программиста — Л.Веллинг, Л. Томсон «Разработка WEB-приложений с помощь PHP и MySQl» и еще одна важная книга — Мэт Зандстра «PHP. Объекты, шаблоны и методики программирования».

По каким критериям вы бы выбирали учебный курс PHP-программирования, если бы сегодня вам довелось стать студентом?

Я бы не стал тратить время и учиться по нескольким курсам, статьям, а выбрал бы надежное учебное заведение со сложившейся репутацией на рынке образования. Сейчас очень много различной неструктурированной информации по PHP, в которой новичку можно «утонуть», так и не докопавшись до сути.

И еще один важный момент, я бы взялся за изучение языка PHP вместе с преподавателем, так как самостоятельное изучение всех моментов – долгий и трудный путь.

Также немаловажен в дальнейшем такой критерий, как сертификат об окончании курса обучения. Для работодателя – это важный фактор при отборе сотрудников.

Какова ваша основная мотивация в преподавании?

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

Таким образом, главные мои мотиваторы в преподавательской работе – это саморазвитие и желание делиться знаниями.

В чем ваши «фишки», как преподавателя?

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

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

В конце курса студентам нужно будет реализовать совместный интересный проект, в котором реализуются полученные знания и навыки.

Как быстро после прохождения курса можно стать специалистом PHP начального уровня?

Я думаю, еще 2-3 месяца после завершения курса практической работы с PHP и чтения литературы помогут выйти на начальный уровень. Также я настоятельно рекомендую начать хоть и небольшой, но свой проект – новостной сайт или интернет-магазин. В процессе реализации проекта вы пройдете все основные этапы работы PHP-программиста. При трудоустройстве вы также сможете предъявить работодателю конкретный пример своей работы.

20 советов и трюков для всех, кто занимается разработкой под MySQL PHP

500 килохитов/сутки) на средненьком дедике (Core 2 Duo E6400 2.13ГГц и т.д.). Всё настроено и работает (тьфу-тьфу-тьфу), но посещаемость постепенно растёт и по моим прогнозам через 3-6 месяцев сервер начнёт захлебываться. Планирую, как буду решать эту проблему. Есть идея вынести mysql на отдельный дедик. Теоретически всё просто — поднять mysql на голом сервере, сделать удаленный доступ и прописать в скриптах адрес нового сервера. Но что получится на практике? Если предположить, что второй сервер будет стоять в той же стойке, то какую задержку будет давать TCP/IP ? Есть какие-нибудь другие (бюджетные) способы соединения серверов?

З.Ы. nginx+fastcgi+memcached уже используются, возможностей для внутренней оптимизации мало.

500 килохитов/сутки для Вашего дедика — не такая уж и большая нагрузка, хотя, наверно, много зависит от конкретной ситуации.
1) У Вас сейчас основную долю в нагрузку вносит MySQL?
2) Кеширование nginx уже настроено и используется на все 100%?

1) У Вас сейчас основную долю в нагрузку вносит MySQL?
mysql и php примерно 50/50 (есть несколько экзотических библиотек, которые хорошо грузят процессор).

2) Кеширование nginx уже настроено и используется на все 100%?
В смысле кэширование картинок? Вообще не использую, но сомневаюсь что это даст заметный эффект (основную нагрузку на диск создает большая база данных).

Есть много хостеров которые так и используют БД на отдельном сервере, по обычному каналу.
В абсолютных цифрах сколько времени тратится на обмен пакетами (например, скрипт выполняет 15 запросов к базе данных)?

В смысле кэширование картинок? Вообще не использую, но сомневаюсь что это даст заметный эффект (основную нагрузку на диск создает большая база данных).

Нет, я имел ввиду не отдачу статики средствами nginx, что тоже дает какие-то крохи, а именно кеширование, смотрите http://dklab.ru/chicken/nablas/56.html.

В абсолютных цифрах сколько времени тратится на обмен пакетами (например, скрипт выполняет 15 запросов к базе данных)?

В интернете упорно ходит мысль о том, что использование MqSQL через сокет на процентов 10 быстрее, чем через сеть, возможно, со ссылкой на сайт mysql. Даже, если реально цифра потери производительности несколько меньше, ее не стоит сбрасывать со счетов. С учетом этого Round robin выглядит предпочтительнее по производительности. Плюс надежность, что тоже немаловажно.

Сейчас один сайт с посещаемостью 1-1,5 миллина хитов в сутки работает на одном сервере.
Торможений нет.
Сервер 3-х летней давности, но очень мощный.
2-х процессорный Xeon 5140 2.33GHz
8 Гб ram.
Диски SAS 15 000 об/мин в 10-м рейде.

Рекомендую.
1) Если есть возможность то MySQL держать на том же сервере, что и PHP, так как меньше задержки пересылки данных между MySQL и PHP.

2) лучше взять один самый мощный сервер для сайта, чем несколько маломощных, так как упрощается администрирование и прочие издержки.

3) Оптимизируйте запросы к mysql и структуру таблиц mysql. Делайте кеширование сайта в виде статических HTML страниц, обновляемых через определенный период времени. – Это даст больший выигрыш в производительности, чем апгрейд железа.

Можете в абсолютных цифрах сказать? На сколько милисекунд дольше проходит запрос к соседнему серверу, по сравнению с localhost (без учета что на соседнем сервере mysql отработает быстрее).

по каким критериям вам померять? какими инструментами?

PS: забыл сказать, mysql я особо не хачил.
тупо вместо my.cnf засунул директивы из my-large.cnf

Если MySQL вынесен на сервер в той же стойке/в том же ДЦ — то тормозов не будет. По поводу близкого размещения серверов стоит поговорить с датацентром.
Я выжимал из Core2Duo 1.3кк хитов на стандартных CMS, может быть, сервер нужно донастроить?

Boris A Dolgov добавил 08.07.2010 в 14:11
у этого форума база вынесена на отдельный сервер, тормозит? 🙂

Ага, не работает по 2 часа в день. :madd:

В интернете упорно ходит мысль о том, что использование MqSQL через сокет на процентов 10 быстрее, чем через сеть,
это не слухи, а логика : вместо практически мгновенного обмена данным в памяти, получаем прокачку по сети, причем на каждую страницу приходится множество запросов mysql с обязательным ожиданием ответа от сети, никакой буферизации нет. паралельные запросы почти никто не умеет писать.

впрочем, это далеко не всегда критически важно, просто разница есть.

Подскажите, как интерпретировать значение idle из top? В среднем значение 50-70%. Это значит, что процессор 50-70% времени простаивает без задачи (т.е. есть свободные ресурсы и это хорошо) или это значит что 50-70% времени процессор ждёт чего-то (например, работа с дисками тормозит и это плохо)?

до версии ядра 2.5.41 в idle включалось время ожидания ввода вывода.
В версиях новее 2.5.41 в idle показывается только процент времени когда процессор бездействует.
А для ожидания ввода вывода добавили wa

man
CPU
These are percentages of total CPU time.
us: Time spent running non-kernel code. (user time, including nice time)
sy: Time spent running kernel code. (system time)
id: Time spent idle. Prior to Linux 2.5.41, this includes IO-wait time.
wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle.
st: Time stolen from a virtual machine. Prior to Linux 2.6.11, unknown.

есть еще полезная команда vmstat
Еще рекомендую команду sar из пакета atsar

Добавить комментарий