Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
DelpH
Зарегистрирован: 16.04.2002 Сообщения: 67 Откуда: Kazan
|
Добавлено: Пн Янв 20 2003 10:10 Заголовок сообщения: Позицию в файле на конкретную строку ? |
|
|
Есть тестовый файл (вместо БД) - каждая строка содержит поля, разделенные символом. Длина строк всегда разная. Можно ли как-нить перевести указатель в файле на конретную строку? (врядли конечно...) |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Янв 20 2003 12:14 Заголовок сообщения: Вар. 1. Чтение построчно. Вар. 2. Предварительно проиндексировать. (-) |
|
|
- |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://prof Гость
|
Добавлено: Пн Янв 20 2003 13:52 Заголовок сообщения: Нельзя. Поэтому во FreeBSD используют двоичные БД |
|
|
Во FreeBSD данные о юзерах лежат в текстовом файле /etc/master.passwd, но все программы обращаются кдвоичных файлах /etc/pwd.db и /etc/spwd.db, которые получаются компиляцией из /etc/master.passwd. А идея с индексацией здравая - так работают с почтовыми ящиками Waffle и NetscapeNavigator. |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Янв 20 2003 14:18 Заголовок сообщения: Re: Нельзя. Поэтому во FreeBSD используют двоичные БД |
|
|
Если вопрос в доступе к файлам, которые скомпилированы из текстовых (типа alias.db, mailertable.db, passwd.db, termcap.db и т. д.), то для обращения к ним есть готовые библиотечные функции. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://prof Гость
|
Добавлено: Пн Янв 20 2003 14:54 Заголовок сообщения: Это как раз не вопрос, дело в другом |
|
|
Есть много схем ранения данных: - неупорядоченный плотный или неплотный массив; - упорядоченный плотный или неплотный массив; - упорядоченный или неупорядоченный однонаправленный или двунаправленный список; - двоичное дерево; - более разветвленное дерево; - hash-database.
К набору данных м.б. применены разные операции: - поиск элемента по заданному ключу; - ображения к ранее найденному элементу; - вставка/удаление элемента; - поиск похожего элемента; - вывод списка элементов.
Так вот, в зависимости от количества элементов и от того, какие операции будут применяться наиболе часто, выбирают разные схемы хранения данных... Для хранения юзерских эккаунтов (pwd, spwd) и почтовых баз (aliases, access, mailers, virtusers) во FreeBSD выбрана схема hash-database. |
|
Вернуться к началу |
|
|
Борис Гость
|
Добавлено: Пн Янв 20 2003 16:01 Заголовок сообщения: Что-то я запутался |
|
|
Вопрос бы такой:
>>Есть тестовый файл (вместо БД) - каждая строка содержит поля, разделенные символом. Длина строк всегда разная. Можно ли как-нить перевести указатель в файле на конретную строку? (врядли конечно...)
Ясно, что по причине ненормированности строки подсчитать адрес требуемой строки невозможно, поэтому нужно или посчитывать число симовлов-разделителей (чтение построчно сначала), или определить заранее адреса этих разделителей (преварительная индексация). Вроде это и есть ответ.
Тогда не очень понятны рассуждения про доступ к двоичным файлам-базам данных? Или ты отвечаешь на какой-то подразумеваемый вопрос (который мне не понятен), или ты опережаешь мысль спрашивающего. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://prof Гость
|
Добавлено: Пн Янв 20 2003 17:11 Заголовок сообщения: Я предлагаю подумать о смене формата БД |
|
|
Если у человека начинаются проблемы с быстрым доступом к текстовой БД, то надо сменить формат БД - например, сделать срОки одинакокой длины, дописывая их пробелами (ну и еще есть куча вариантов типа нумерации строк в них самИх). |
|
Вернуться к началу |
|
|
DelpH
Зарегистрирован: 16.04.2002 Сообщения: 67 Откуда: Kazan
|
Добавлено: Вт Янв 21 2003 14:37 Заголовок сообщения: Re: Я предлагаю подумать о смене формата БД |
|
|
Всем спасибо. Думаю, что сделаю ширину столбцов таблицы постоянными. |
|
Вернуться к началу |
|
|
Dmitry.Karpov http://prof Гость
|
Добавлено: Вт Янв 21 2003 19:13 Заголовок сообщения: А я предлагаю подумать о транзакциях |
|
|
Одно время существовал проект HelpSelf - жестко модерилуемый форму, куда не пропускались В/О без необходимой информации. Так вот, в свое время там намучились с текстовыми файлами, т.к. при одновременном послуплении нескольких запросов система рушила файл с БД. Потом систему перевели на SQL, и эта проблема исчезла. Так вот, подумай - по силам ли тебе написать полностью реентерабельный код или лучше взять MySQL? А если появится данное, не влезающее в отведенное поле? |
|
Вернуться к началу |
|
|
|