Оригинальный способ работы с текстовыми базами.

Kelkos

Сам себе программер
Оригинальный способ работы с текстовыми базами.

Пишу сразу в оффтоп. Зачем вообще пишу? Хм. вроде такого метода раньше не видел.. Может комунить потом понадобится.
Вообщем, это попытка заменить несколько неудобные текстове базы типа:
field1|field2|......|fieldn
на более понятную ассоциативную базу.
Я, конечно, понимаю, что многие начнут крутить пальцем у виска и вздыхать приговариая "MySQL... XML.. ", но не всегда удобно ради нескольких параметров завидить новую табличку муськи, да и с хемулем (XML) тоже хлопот много..
ладно, ближе к телу. Вообщем идея такова - юзать встроенную функу parse_ini_file.
Файл-база base.php
Код:
;<? exit;?> - тешим свою параною.
;=========================
[0]
field1 = 123
field2 = 456
field3 = abc
fieldn = xyz

[1]
field1 = param
field2 = fff
field3 = 135
fieldn = 999
Пример чтения базы:
PHP:
<?
$db = parse_ini_file("base.php", true);
echo '<pre>';
print_r ($db);
echo '</pre>';
?>
Получится двухмерный массив с ассоциативными полями. Чем положительно отличается от обычных текстовых баз, которые разбираем построчно и эксплодим.. Хм. Удобство визуального редактирования. Удосбтво парсинга (одна встроенная функа заместо самопальной). Каждая запись может иметь разное количество полей и их названия (чего в обычных базах оч. трудно сделать).

--------------
З.Ы. Не претендую ни на что.. просто идея..
 

Фанат

oncle terrible
Команда форума
ничего похожего на текстовую базу я тут не увидел.

Если кто не понимает различия между базой и ини файлом, то это не страшно - с опытом придёт понимание
 

Kelkos

Сам себе программер
Я ожидал худших камментов. Значит не так всё плохо.
-------------
ничего похожего на текстовую базу я тут не увидел.
-------------
Хм. А что это тогда? Разве полученный массив:
Array
(
[0] => Array
(
[field1] => 123
[field2] => 456
[field3] => abc
[fieldn] => xyz
)

[1] => Array
(
[field1] => param
[field2] => fff
[field3] => 135
[fieldn] => 999
)

)
не является базой?
--------------
Хм.. насчёт америки.. ну я и не претендовал на её открытие.. просто предложил вариант, которого ещё небыло.
Зачем я вообще это выложил? Ну.. помогал одному новичку и этот метод ему показался проще чем разбирать построчно файл и експлойтить его.
Ладно. я прекратно понимаю глупость этоо метода. но всё же.
 

SiMM

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

> тогда-уж проще использовать serialize()
Попробуй отредактировать файлик с serialized-данными :) Да и по поводу затрат ресурсов - их это точно так же касается.
 

berkut

Новичок
Попробуй отредактировать файлик с serialized-данными
Судя по названию топика: Оригинальный способ работы с текстовыми базами, то "ручное" редактирование не предпологается. Отредактировать файл(ы) бд mysql ещё сложнее.
А по поводу затрат ресурсов, то этот способ в полной мере себя оправдает(перед parse_ini), при внесении изменений в базу. Да и в конце-концов, можно обеспечить неограниченную вложенность(иерархию даных).
 

SiMM

Новичок
> Cудя по названию топика: Оригинальный способ работы с текстовыми базами
Как показывает практика, не каждый человек может верно сформулировать не только тему, но и сам вопрос. Есть у ini-шек плюсы. И своя ниша. ИМХО. К полноценным БД она конечно же отношение имеет малое.

> А по поводу затрат ресурсов, то этот способ в полной мере себя оправдает(перед parse_ini), при внесении изменений в базу.
Да не ужели? :) То что некоторые действия будут скрыты от глаз программиста ещё не значит, что их не будет вообще. Достаточно сделать эксперименты при большом объёме подобных "записей" - как минимум, сразу же нарвётесь на ограничение сверху, равное memory_limit. Я не говорю что его нет у ini-файлов (я уже говорил, для чего они удобны - там и речи быть не может о больших объёмах). Однако их нет при иных, альтернативных способах хранения данных (взять к примеру тот же [m]dbase[/m]).
 

Фанат

oncle terrible
Команда форума
я понял
это такая специальная read-only база =)
пример чтения нам нарисовали, а про пример записи как-то забыли.
Ну, или это база полуавтомат: читает автоматом, а запись идёт вручную =)
 

berkut

Новичок
>Достаточно сделать эксперименты при большом объёме подобных "записей" - как минимум, сразу же нарвётесь на ограничение сверху, равное memory_limit

в этом плане я не вижу разницы между parse_ini и serialize.
Я сравнивал именно "базу", "основанную" на parse_ini с serialize. В плане затрат памяти и скорости эти способы эквивалентны. Зато serialize гораздо более удобен, в плане редактирования записей. А то, что оба этих способа никак не тянут более-менее серъёзную бд, так это и ежу понятно.
Хотя у этих способов есть преимущество перед dbase - можно обеспечить целостность данных.
dbase
There is no support for indexes or memo fields. There is no support for locking, too. Two concurrent webserver processes modifying the same dBase file will very likely ruin your database.
 

SiMM

Новичок
> Хотя у этих способов есть преимущество перед dbase - можно обеспечить целостность данных.
У parse_ini_file? ;)
 

Crazy

Developer
Автор оригинала: berkut
Хотя у этих способов есть преимущество перед dbase - можно обеспечить целостность данных.
Правда? И как же именно ты собираешься обеспечивать целостность данных в предложенном извратном способе?

Тестовый пример: имеем две таблицы: авторы и книги. Таблица авторов содержит поля id и name, таблица книг -- id, authorID и title.

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

berkut

Новичок
SiMM с parse_ini_file без извратов изменять данные не получится. Но наверно, ты имел в виду тоже, что и Crazy
Crazy я неправильно выразился, виноват. целостность файла, а не данных. Хотя, почему и нет,можно обеспечить и целостность данных. Если я правильно всё понимаю, то и mysql MyISAM Не обеспечивают целостность данных. Поправь, если я в чём-то ошибаюсь
 

SiMM

Новичок
> Вопрос: как ты собираешься обеспечивать целостность данных? Ответ заодно покажет, понимаешь ли ты смысл этого словосочетания.

Рученьками только если файлы лочить. Вобщем, изврат всё это :)
А меня вот вдруг вопрос заинтересовал - почему dbase "кастрированный"? Может, попробовать заняться... :)
 

Crazy

Developer
Frol, "а мы в России изобрели новый способ удаления зубов через задний проход. Основное его достоинство в том, что не страдает губная помада..." (c)
 
Сверху