Организация БД на файлах

Статус
В этой теме нельзя размещать новые ответы.

Baranov_Dron

Новичок
Организация БД на файлах

В новом проекте понадобилась работа с файловой БД. Всегда вот с мускулом хорошо дружил, а тут задача именно с файлами.
С ними никогда не работал много, ну как функции для работы знаю с ними, но парочка вопросов осталась.
Вообще хотел посмотреть толковые примеры по работе приложений с файловой БД, но нечего не нашёл...
Так теперь вопросы...
Есть в общем таблица... В ней столбцы:
id|title|moderate|text|url
Поиск нужно осуществлять только по полям id, title(заголовок статьи), moderate(флаг - 0и1)
Text самый большой по объёму данных столбец, по нему поиск вести не надо...
Собственно хочу сделать так, один файл будет содержать id|title|moderate раздеяемые cимволами \r\n
И уже рядом куча файлов вида id.txt, где вместо id определённый номер... В этом файле уже будет текст и url.
Но меня больше всего смущают разделители...
Теперь вопросы:
1) Допустим, что будет если в title будет содержаться символ новой строки? Или символ | Будет плохо...как этого избежать?
2) Поиск хочу делать, обходя построчно файл функцией fgets(), плохая ли идея? Может лучше использовать функцию file()
3) Не вижу ничего плохого смотреть, как организованы чужие решения. Какие бы вы проекты с open sourse могли бы посоветовать посмотреть, где толково реализована работа с файлами?
4) Что делать, если строк будет тысяча.. а нужно удалить 10ую....остальные циклом вниз смещать?
 

Фанат

oncle terrible
Команда форума
но ничего не нашёл...
и совершенно закономерно. дураков вокруг тебя гораздо меньше, чем тебе кажется.
1) Допустим, что будет если в title будет содержаться символ новой строки?
ну замени их на что-нибудь. при выводе обратно разменяешь. как это сделано в mysql, с который ты замечательно умеешь работать.
2) Поиск хочу делать, обходя построчно файл функцией fgets(), плохая ли идея? Может лучше использовать функцию file()
без разницы.

3) Не вижу ничего плохого смотреть, как организованы чужие решения. Какие бы вы проекты с open sourse могли бы посоветовать посмотреть, где толково реализована работа с файлами?
никакие. дураков - как уже отмечалось - нет.
4) Что делать, если строк будет тысяча.. а нужно удалить 10ую....остальные циклом вниз смещать?
совершенно верно.
mysql, между прочим, именно так и делает.
 

Baranov_Dron

Новичок
Автор оригинала: kruglov
Тссс, не будем ему говорить про фрагментацию и индексы?
Что такое индексы я знаю) Ускоряют поиск, тоесть без них поиск ведётся сначала таблицы и до достижения результата, ну или до конца таблицы. Но вот как система СУБД сделала их я не знаю, в технические подробности невдовался. Но если не ошибаюсь создаётся дополнительный файл, в котором выполнена сортировка уже по столбцу в котором есть индекс, и поиск идёт уже по этому столбцу быстрее, так как он отсортирован(точно алгоритм не помню...)
А дефрагментация как раз с индексом связана, удаляет пустые записи в индексе и тд..
ХМ идея сделать индекс на файлах самому интересна) но весьма сложна...

-~{}~ 06.07.08 22:34:

Автор оригинала: dimagolov
Baranov_Dron

обоснуй
будет система блогов, разных авторов, и для каждого нужно будет создавать свою базу данных, и представьте себе приложение работает с кучей баз данных...
имхо работа с файлами легче... /blogs/user каталог и всё...
поиск будет гуглом по сайту...
тоесть поиск отпадает по текстовому содержимому
404 - Not Found

-~{}~ 06.07.08 22:38:

Автор оригинала: *****
и совершенно закономерно. дураков вокруг тебя гораздо меньше, чем тебе кажется.
Почему тогда существуют такие проекты как форум http://exbb.net/, http://cmswithoutmysql.ru/
Автор оригинала: *****
ну замени их на что-нибудь. при выводе обратно разменяешь. как это сделано в mysql, с который ты замечательно умеешь работать.
Я умею работать) Но вот как она организована я не знаю...
ХМ а если то на что я заменю окажется введено пользователем, то при обратной замене мы получим ненужную обратную замену))
Автор оригинала: *****
совершенно верно.
mysql, между прочим, именно так и делает.
Но у неё как-то это получается весьма быстро...чего не скажешь про php...
 

maxwell

artifex
Baranov_Dron, по твоему остальные БД работают на чем-то эдаком магическом и непонятном?
 

dimagolov

Новичок
я в урле "l" в конце откусил, уже поправил

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

maxwell

artifex
«Я умею работать) Но вот как она организована я не знаю...
ХМ а если то на что я заменю окажется введено пользователем, то при обратной замене мы получим ненужную обратную замену))»

Я умею копать лопатой, только как она выглядит и из чего состоит не знаю.
ХМ а если заменять на что-то такое, что не может ввести пользователь?
 

Baranov_Dron

Новичок
Baranov_Dron, по твоему остальные БД работают на чем-то эдаком магическом и непонятном?
Ну в принципе я всё понял, повозится придётся не мало...
Да нет) Как правило СУБД пишутся на С и ясен пень там скорость будет весьма больше, чем на php.
Вообще топик был создан убрать кое-какие сомнения в этом вопросе. А как обычно встретил куча стёба от других участников(((

-~{}~ 06.07.08 23:20:

Автор оригинала: dimagolov
я в урле "l" в конце откусил, уже поправил
Спасиб за ссылку, посмотрел, да... там автор большую задачу поставил...
Автор оригинала: dimagolov
не понимаю, почему блоги разных авторов требуют разных таблиц, не то что баз....
Ну дело в том, что помимо постов нужна таблица комментариев, фотографий и тд...
И если хранить все посты в одной таблице - это перебор, иметь в 1 бд таблицы типа user_posts - тоже самое, что в БД user - таблица posts
Разницы в производительности если идти в сторону допустим MYSQL особой не будет...
Файлы удовлетворяют всем, вопрос в том, чтобы сделать качественную реализацию работы с файлами, так чтоб лижбы работало могу и за час написать... Хочу всё продумать, всё просчитать... Чтоб не возникло потом краха некоторых файлов из-за ошибок...

-~{}~ 06.07.08 23:26:

Автор оригинала: maxwell
«Я умею работать) Но вот как она организована я не знаю...
ХМ а если то на что я заменю окажется введено пользователем, то при обратной замене мы получим ненужную обратную замену))»

Я умею копать лопатой, только как она выглядит и из чего состоит не знаю.
ХМ а если заменять на что-то такое, что не может ввести пользователь?
Неужели я должен знать всё, что и как делает БД, чтобы с ней работать, синтаксис должен, что делает та или иная SQL команда должен. А вот как уже сам MySQL распоряжается для выполнения SQL команды мне знать не обязательно. Не плохо конечно, но не обязательно.
__________
Не тут в принципе делать что-то типа поиска в тексте значания на которое меняем, если нет совпадений, то делаем замену, если есть добавляем допустим сложением строки $str .= "i'; а потом записываем значение замены где-нибудь)
 

dimagolov

Новичок
Не тут в принципе делать что-то типа поиска в тексте значания на которое меняем, если нет совпадений, то делаем замену, если есть добавляем допустим сложением строки $str .= "i'; а потом записываем значение замены где-нибудь)
с такими идеями тебе явно рано приниматься за написание БД.

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

А вот как уже сам MySQL распоряжается для выполнения SQL команды мне знать не обязательно.
заблуждаешься. если про это не задумываться, то у тебя slow query будут через одно и сайт будет стабильно тормозить. и многое закладывается в структуру БД, добавляется денормализация для производительности и т.д.
 

maxwell

artifex
«Ну в принципе я всё понял, повозится придётся не мало...
Да нет) Как правило СУБД пишутся на С и ясен пень там скорость будет весьма больше, чем на php.
Вообще топик был создан убрать кое-какие сомнения в этом вопросе. А как обычно встретил куча стёба от других участников(((»
Baranov_Dron, я вообще-то не про язык, а про файлы.
 

Baranov_Dron

Новичок
<с такими идеями тебе явно рано приниматься за написание БД.
Ну у меня меньший план, нежели БД. Сделать класс, для работы с двумя таблицами, думаю такое я уж осилю...
<аблуждаешься. если про это не задумываться, то у тебя slow query будут через одно и сайт будет стабильно тормозить. и многое закладывается в структуру БД, добавляется денормализация для производительности и т.д.
Согласен, сложный запрос без книжки мне не составить, сложный запрос делаю с книгой Поль Дюбуа на коленях...
 

Gas

может по одной?
Baranov_Dron
Вот честно, ты страдаешь фигнёй и чуть позже это поймёшь. Если ты писал диплом в университете, то там были такие разделы как "изучение аналогов" и "экономическое обоснование" (может немного иначе но смысл тот-же). Это совсем не зря, ты сейчас пытаешься заново создать то, что уже давно существует, отлажено и используется годами. А в своей поделке получишь очень узкоспециализированный функционал, содержащий баги и не удовлетворяющий требованиям производительности, расширяемости и т.д.
 

Духовность™

Продвинутый новичок
Я по молодости в 2002 написал на файлах 2 сайта. Один представлял собой каталог. Естественно, каталог разрастался.

В 2008 сайт перевели на карантинный сервер, ибо он жрал много ресурсов, т.к. весь каталог грузился в память с помощью file()

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

ты либо БД не знаешь вообще, либо проектировать не умеешь.
 

kruglov

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

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

Фанат

oncle terrible
Команда форума
Я прикрою эту тему, с вашего разрешения.
Клиент неоперабелен.

Да и сам я хорош - на задал сразу вопроса "почему нельзя базой".
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху