Инструкция по RDB 0.9

Posted by: Rumba
Date: Sun, 06 Jan 1980 09:29:52
Tags: бесплатно настройка установка cms php новостной База данных

Обычай мой такой:
Подписано,так с плеч долой

© А.С.Грибоедов

Ранее анонсированная Rumba Data Base 0.9, демо которой было продемонстрировано в прошлой статье на радость ожидающим выложено в паблик. Наконец-то! Теперь любой желающий может пощупать и прикрутить с своему скипту довольно бойкую БД, работающую на текстах и реализовывать свои мечты )). Работа с новой БД сведена всего к двум запросам: SELECT и EDIT. При этом SELECT по сравнению с предыдущей версией RDB также изменился, поэтому желающие подключить более новую версию должны будут подправить и запросы в своих скриптах.

В распространяемом дистрибутиве имеется простое демо, которое генерирует базу данных в 1000 записей размером в 5 мегабайт и демонстрирует варианты запросов к базе и скорость их исполнения. Ниже состав параметров для запросов будет подробно расписан, и есть надежда, что большая часть вопросов будет снята. Внимательно читайте readme.txt, в котором также расписана работа с БД и лицензия на её использование.

Метод NEW

При работе с БД для начала её нужно инициализировать. Вот примерный вариант:

Scontent = new rumba_db (
data/baza, # адрес карты базы
data/baza, # адрес базы
data/baza, # адрес кода (нет - nothing)
4, # количество полей в файле карты (меньше, чем у базы)
10000, # максимальный размер базы (записей)
64, # длина строки cod (название, адрес, и шифр)
1000, # размер map меньше которого будет перебор по map, а не по cod
10000 # размер блока для перебора
);

Здесь особое внимание следует обратить на:
  • Количество полей в файле карты - оно должно быть меньше, чем у базы. Чем меньше полей мы помещаем в карту базы, и чем компактней их содержимое, тем быстрее БД будет работать. Отметим, что поиск и выборку БД делает только по карте базы, и никогда - по самой базе, поэтому то, чего нет в карте - для поиска не существует).
  • Максимальный размер базы - при подключении БД мы должны указать предположительное максимальное количество записей. Например, на момент инициализации имеется 100 записей, мы полагаем, что за год записей станет порядка 500 (к примеру мы будем добавлять по одной в день). В этом случае разумно указать размер в 1000 записей. Следует категорически избегать переполнения базы! Другой вариант - в базе 20000 записей, и за год эта цифра обязательно удвоится. Тогда указывает размер в 50000 записей. Не следует экономить на этом параметре, поскольку его можно всегда изменить, удалив при этом файлы ХХХ_map.rdb и XXX_cod.rdb (БД их сгенерирует заново под новые параметры). Но конечно, этот параметр должен быть адекватен базе, так как 1000 записей совсем не требуют параметра в 100000 (это не логично и ведет к лишнему расходу места на диске).
  • Длина строки cod (название, адрес, и шифр) - этот параметр влияет на размер файла XXX_cod.rdb В нем мы указываем максимальный размер ID записи. Например для страницы istoria-cms.html ID будет размером в 11 букв. При значении 64 на максимальный размер длины ID отводится порядка 40 знаков. Соответственно, при 48 - примерно 24. Таким образом, если вы вдруг захотите записям давать очень длинные ID (что не рекомендуется), то параметр этот нужно будет увеличить. Длина строки cod влияет на скорость работы БД, в связи с чем желательно оставлять её в разумных пределах.

    Адреса файлов БД даются раздельно для потенциальной возможности разнести эти файлы на разные физические диски - как один из элементов возможности ускорения работы БД и использующего её скрипта.

    Метод SELECT

    Основной запрос к базе - это обычно выборка группы записей по некоторому признаку, например:
    select (Ssearch_who, Sparam, Ssearch_in=map, Ssearch_out=max, Snum_page=0, Ssize_page=10)
    - Ssearch_who, что ищем (обычно из S_GET[zapros]
    - Sparam, массив запроса вида array(-1=>array(~~, ‡))
    номер столбца (-1 во всех) и как ищем (содержит, равно, больше и т.д.)
    ~~ (!~) содержит (не содержит)
    == (!=) равно (не равно)
    >= (<=) больше (меньше) или равно
    Последний параметр - что ищем, с чем сравниваем.
    - Ssearch_in=map, искать в файле карты или в индексе
    (это только для одной страницы )
    - Ssearch_out=max, выдавать строку из карты (не все столбцы - min)
    или же из базы (медленней -max)
    - Snum_page=0, номер страницы (в ленте новостей)
    - Ssize_page=10 количество новостей на страницу

    Массив запроса param может состоять из нескольких вложенных массивов, и RDB будет перебирая строки искать те записи, которые отвечают ВСЕМ условиям запроса.

    Метод EDIT

    Для администрирования БД этот метод имеет некоторые параметры. Рассмотрим варианты использования метода edit (Sregim, Sin) где regim:
  • Добавляем статью (без проверки на существование) edit (write_one, Sww);
  • Добавляем статью (с проверкой на существование) edit (add_one, Sww);
  • Переписываем статью (медленно) edit (replace_one, Sww);
  • Переписываем статью с переносом в начало (быстро) edit (rewrite_one, Sww);
  • Удаляем статью статью edit (del_one, Sww);

    При этом
    Sin = array(id, Название статьи, razdel, rumba-Метка Румба;,
    Автор, time(), Description, Анонс, Текст, yes);


    Полезности

    Ещё несколько слов об использовании RDB:
  • При работе с RDB следует учитывать, что это линейная и БД, имеющая направление согласно хронологии заполнения (добавления) статей. Значит, при запросе SELECT (при выборке по файлу карты) первой в выдаваемом массиве результатов будет последняя, подходящая по условиям запись, второй - предыдущая и т.д.
  • Скорость выборки при запросе выборки по карте зависит от глубины запроса. Таким образом быстрей всего выбираются последние списки, и медленней всего первые (из внесенных в БД). В этом заключается идеология RDM, рассматривающая любую базу, как архив, в котором информация ищется с конца записей, и как только поиск дал нужный результат, выборка прекращается. Т.е. частота надобности линейного поиска информации обратно пропорциональна её хронологической удаленности.
  • RDB предназначена для подключения к скриптам, разработанным на РНР как простейшая альтернатива MySQL. Максимально допустимые размеры базы данных для RDB составляют 0.5 Гб при 0.5 млн. строк (записей).
  • При изменении параметров или ручной работе с основным файлом БАЗА.rdb необходимо удалить файлы карты и индекса, после чего RDB сгенерирует их заново.
  • Скорость выборки информации по ID (это по сути выборка КЛЮЧ-ЗНАЧЕНИЕ), не зависит от хронологической удаленности (расположения в базе) записи.
  • Количество полей в записи не ограниченно, но не может быть меньше трех, количество полей для карты должно быть меньше количества полей в базе, но не менее двух.
  • Поля, попадающие в карту БД отсчитываются слева направо по полям базы.
  • В крайние правые поля следует помещать наиболее крупную по размеру информацию.
  • При выдаче по запросу БД выставляет флаг SВАШАБАЗА->flag

    База данных RDB хранится в трех файлах:
    1) БАЗА.rdb - база данных (первое поле ID)
    2) БАЗА_map.rdb - карта базы, по которой и производится выборка
    3) БАЗА_cod.rdb - индекс для выборки по ID записи

    Формат выдачи по запросу SELECT:
    array
    (
    array(),
    array(),
    ...
    )
    где каждый вложенный массив - это одна запись с значениями, равными
    полям в записи.

    Версия 0.9 доведена до стабильного состояния, однако в процессе дальнейшей разработки будет постепенно модифицироваться с целью удаления ошибок и улучшения работы, при этом интерфейс её будет сохраняться, таким образом можно будет периодически заменять файл rdb.php на более новый без необходимости вносить изменения в код скриптов, работающих с RDB. Иное будет обязательно указываться при модификации. При разработке Rumba News 0.7 используется RDB 0.9, в связи с чем интерфейс БД формируется максимально удобным для использования в блого-новостном стиле работы с хронологически направленной структурой данных, учитывайте это при своих разработках.

    Сегодня мы можем твердо утверждать, что Rumba, это не только просто, Rumba, это ещё и быстро! Это Rumba.


  • Смотри также:


    Импорт базы из WordPress в Rumba XML стал ещё удобней  Администрирование в движке Easy 1.1  Импорт WordPress базы данных для Rumba XML  Простая cms система в стиле cmsimple  Денвер и Zend Opimiser 





    Комментарии


    GeorgeLoogs

    Fri, 01 Sep 2017 18:28:30

    Uhwefwi ufhweifhw wnfjweof vbdnvweui wiefweh 47665yt34y


    Комментировать


    Ваше имя
    Ваша почта
    Ваш сайт
    Рассылка комментариев





    Ввести код:


        Сгенерировано
        Rumba News v.1.0a
        за 0.114916 сек.