|
|
|
| Продолжение темы http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=541&id_post=4285.
Как известно файловая работа с файловой системой осуществляется быстрее работы с иерархической базой данных и, конечно, быстрее работы с реляционной базой данных. Под работой здесь понимаются операции записи и чтения.
Поэтому там где нужна скрость (например, поисковые системы) прибегают к плоским файлам - это API (набор функций) к драйверу, обеспечивающий простейшие операции помещения записи в файл и извлечения их от туда - т.е. подобие примитивной базы данных, обеспечивающей работы с файлами как с набор строк. Примером может служить dbm, dba-фукнции. | |
|
|
|
|
|
|
|
для: cheops
(22.10.2004 в 18:41)
| | Интересная штука. А можно подробнее. Или ссылочку хотя бы... | |
|
|
|
|
|
|
|
для: Axxil
(23.10.2004 в 11:34)
| | Что-то на ум ничего кроме 16 главы мануала не приходит :)
Работать с ними можно примерно следующим образом
<?php
// Открываем файл test.db
$id = dba_open("test.db", "wd", "flatfile");
if (!$id)
{
echo "Невозомжно открыть файл\n";
exit;
}
// Функция dba_insert принимает три параметра
// первый - ключ, второй - значение, третий дескриптор
dba_insert ("1", "Hello world!", $id);
dba_insert ("2", "Hello world!", $id);
// Проверяем существует ли в файле запись
// с ключом 1
if (dba_exists("1", $id))
{
// Извлекаем данную запись и выводим
echo dba_fetch("1", $id);
// Удаляем запись с ключом 2
dba_delete("2", $id);
}
// Закрываем соединение
dba_close($id);
?>
|
Для успешной работы в php.ini должно быть включено расширение
Недостатком является то, что оперировать приходится только одной строкой, но это легко обходится при помощи функций serialize() и unserialize(), позволяющих запаковать массив в строку и потом извлечь его от туда, соответственно.
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=535&page=1 | |
|
|
|
|
|
|
|
для: cheops
(23.10.2004 в 11:52)
| | А чё, вроде несложно. Этакая смесь БД с файлами. А чё она реально быстрее чем БД работает?
$id = dba_open("test.db", "wd", "flatfile");
|
что несут в себе два последних параметра?
И ещё вопрос сколько на данный момент весит база этого форума.
(Для оценки ресурсов своего будущего форума) | |
|
|
|
|
|
|
|
для: Axxil
(23.10.2004 в 13:03)
| | Ну быстрее на добавление удаление и полное сканирование, разумеется в операциях поиска и сравнения (особенно по ключам) полноценная база данных файлы делает, так как она для этого и создана.
Второй параметр определяет режим доступа к файлу, перая букава может принимать три варианта
r - чтение
w - запись
c - создание
литера d - несёт отвественность за лочение файла.
Третий аргумент позволяет задать тип файла, типов может быть достаточно много, но практически все являются тем или иным вариантом Berkeley DB: dbm, ndbm, db2, db3, db4, flatfile и т.п.
PS Именно этот форум весит чуть больше 2 Мб. | |
|
|
|
|
|
|
|
для: cheops
(23.10.2004 в 13:54)
| | А можна ли создать вашу Powercounter 2.1.0 с помощью плоских файлов ? | |
|
|
|
|
|
|
|
для: broker
(24.10.2004 в 12:42)
| | Теоретически да... но в системе администрирования используется большое число операторов SELECT - их придётся реализовывать самостоятельно, сканируя весь файл. Реализовать это можно, но это большая работа и раза в 3 больше кода (скорее всего в конечном итоге всё работать будет медленее при меньшей функциональности). | |
|
|
|
|
|
|
|
для: cheops
(24.10.2004 в 12:52)
| | ну тогда можна ли создать скрипт голосования встроенном функцией защиты от повторных голосований одного посетителя (защита от накруток). Без MySql или с помощью плоских файлов | |
|
|
|
|
|
|
|
для: broker
(24.10.2004 в 13:04)
| | /*задумчиво*/ Да, голосование пожалуй идеальная задача для плоских файлов... | |
|
|
|
|
|
|
|
для: cheops
(24.10.2004 в 13:07)
| | Да тогда это хорошо =) | |
|
|
|
|
|
|
|
для: cheops
(24.10.2004 в 13:07)
| | Я посмотрел на голосовалку она кажется больше чем ваш Powercounter2.1.0 )
Что вы посоветовали мне я хочу вместо MySql connect подключиться к плоскому файлу | |
|
|
|
|
|
|
|
для: broker
(25.10.2004 в 23:25)
| | А что вы хотите сделать, после того как подключитесь к плоскому файлу? :) | |
|
|
|
|
|
|
|
для: cheops
(25.10.2004 в 23:45)
| | ну открыть файл как вы показали на пример, записать данные на одну строку через запятой. Как с массивами ) . Хм... можно создать для каждого вопроса новый файл.
Идеи много , Но вот лучший способ не могу найти ... | |
|
|
|
|
|
|
|
для: broker
(26.10.2004 в 12:17)
| | Новый файл пожалуй будет лишний - имеет смысл использовать несколько файлов когда идёт большая нагрузка на запись от разных источников - например, разные разделы форума или гостевой книги лучше помещать в разных файлах. Так же имеет смысл использовать разные файлы, когда очень много записей, так как при увеличении размера файла операции с ними замедляются. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2004 в 14:05)
| | Дело в том что мне с хостом дали только 1 базу mysql и эту базу я хочу использовать для powercounter . И мне еще надо голосовалку поставить а базы нет ( Вот поетому мне надо с файловым записем | |
|
|
|
|
|
|
|
для: broker
(26.10.2004 в 14:47)
| | Одной базы вам будет вполне достаточно. У нас справочник функций, PowerCounter, голосование и ещё уйма всякой всячены (всего около 30 таблиц) висит в одной базе данных. Вы вполне можете использовать одну базу данных для нескольких Web-приложений с условием, что имена используемых таблиц будут различаться. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2004 в 14:56)
| | Аххх да вот не дадумался ))). Значить config.php file для них будет одинокого. | |
|
|
|
|
|
|
|
для: cheops
(26.10.2004 в 14:56)
| | Аххх да вот не дадумался ))). Значить config.php file для них будет одинокого.
Спасибо ))) | |
|
|
|
|
|
|
|
для: cheops
(25.10.2004 в 23:45)
| | кажется спутал с обычным файлом ) | |
|
|
|