![]() |
Модераторы: korob2001, ginnie |
![]() ![]() ![]() |
|
CPLUSPLUS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 22.10.2003 Репутация: -1 Всего: 2 |
Здравствуйте, дорогие друзья!
Perl очень часто применяется для т. н. "текстовых баз данных" и прочего подобного. Очень часто данные сохраняются в текстовых файлах. В книжках очень часто используется построчное сохранение содержимого файла в массиве. Кроме того, иногда осуществляется построчное или побайтовое считывание с соответствующей обработкой (прерываемого действия ![]() |
|||
|
||||
chaos |
|
||||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
Файл с данными может выглядеть так:
Иванов И.И.::888-0000::Какая-то улица, 17, кв 40 Сидоров П.И.::888-8429::Другая улица, 5, кв 21 ...... и тд. тогда программа, которая читает данные, может быть примерно такого вида:
Больше проблем возникает в случее, если надо удалить или отредактировать запись, но и их можно довольно просто и элегантно решить, если использовать механизм редактирования на месте (inplace edit) -- при использовании операции "ромб"(<>), можно читать из одного файла, а писать в другой:
если запустить это программу как change.pl data.dat ,то в текущем каталоге будут два файла: data.dat, с записями, которые удовлетворили нашим условиям и data.dat~ -- предыдущая копия. (также, во многих случаях, всю программу такого типа можно записать как one-liner: perl -i~ -n -e 'print if(... условие)' ) Двоичные файлы Для чтения двоичных файлов в Perl можно использовать функции read и unpack. К примеру, если использовать двоичный файл для хранения телефонной книги такого формата: 40 символов -- фамилия, И.О. 10 символов -- номер телефона, 60 cимволов -- адрес, то строка описания формата для unpack будет выглядеть так: $format_str = 'A40 A10 A60'; а сама программа, аналогичная первому примеру:
Чтобы вывести в файл такую запись можно использовать конструкцию типа
|
||||||||
|
|||||||||
CPLUSPLUS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 22.10.2003 Репутация: -1 Всего: 2 |
Это все конечно очень интересно, спасибо, но вот ты не задумывался при этом, какие ресурсы гробятся? Что может лучше использовать какие-то другие методы?
Те же формуы как пишутся? Добавлено @ 11:12 И на txt, и на MySQL. А в чем разница? |
|||
|
||||
chaos |
|
||||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
кроме как файлов и БД ничего в голову не приходит)
![]()
разница я думаю в том что у кого-то есть возможность пользовать БД, а у кого-то ее нет! Лично я так думаю! |
||||||
|
|||||||
CPLUSPLUS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 22.10.2003 Репутация: -1 Всего: 2 |
"Как выход мне как-то давно тут советовали использовать RDB, например, конечно, MySQL -- решение, использующее, по их словам, меньше ресурсов. Но почему виртуальные хостинги ставят ограничения на их количества, но умалчивают обычно о предельной загрузке аппаратных вычислительных средств?"
Вот именно, для операций поиска, сравнения, хранения что? Для форума большого что лучше? |
|||
|
||||
chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
я думаю буз спорно БД
|
|||
|
||||
wladk |
|
|||
Unregistered |
Беспорно у хранения данных в простых текстовых файлах есть свои преимущества. Точно так же есть свои приимущества при использовании БД.
Текстовые файлы, на мой взгляд подходят для систем: 1. С небольшим объемом данных (десятки тысяч строк). 2. С небольшой нагрузкой (до 10 запросов в секунду). Перл - некое универсальное средство. На мой взгляд, универсальная вещь - это вещь одинаково плохо выполняющая все возложенные на нее функции ![]() Что то мне подсказывает что специально заточенный энджайн, для работы с файлами специального формата, ко всему еще и скомпилированный в бинарник будет работать быстрее чем интерпритируемый перловый скрип юзающий текстовый файл. На мой взгляд основные операции с БД это поиск и сортировка. А это вещи весьма не тривиальные. У Кнута вон целый том на эту тему написан... В готовых СУБД это уже реализовано. Хорошо или плохо, но уже есть. SQL опять же.... Определенно мне больше СУБД нравятся ![]() Посему смотри на задачи. Только вот я бы вообще отказался от простых текстовых файлов в пользу хмл... |
|||
|
||||
CPLUSPLUS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 22.10.2003 Репутация: -1 Всего: 2 |
Но все-таки скажите, почему не лимитируют виртуальные хостинги (слава Богу, не использую) кол-во всяких тестовых файлов а количество баз всегда четко определено?
|
|||
|
||||
wladk |
|
|||
Unregistered |
БД на ВХ - система общего пользования. Один сервер на всех участников.
А наличие файлов тоже ограничиватеся, но не "в лоб". 1 - лимитируестся место для ВХ 2 - уверен, что лимитируются так же и выделение памяти и процессорного времени под процесс для конкретного ВХ. |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
Да просто база данных, расходует больше ресурсов, но работать с ней намного удобней. Если ты хранишь пару тысячь записей, то можно воспользоваться и текстовым файлом, но а вот когда у тебя сотни тысячь записей, то лучше юзать базу, так как манипуляции с данными там делаются намного быстрее и удобнее. Например можно обратиться одним запросом на выборку данных из нескольких таблиц, это всего одна строка SQL запроса, плюс в этом же запросе отсортировать данные по определённым критериям, плюс можно запросто сделать реверс данных и всё это в одной строке SQL запроса.
А теперь давай попробуем прикинуть, сколько кода нужно написать на Perl, что бы выбрать связанные данные из нескольких файлов? Сколько ресурсов при этом мы израсходуем? Удобен ли будет код, для каких либо изменений в будущем? Например: для сортировки данных из текстового файла, что нужно сделать? Или как мы будем делать реверс данных? Ответив на все эти вопросы, ты явно увидешь приимущество баз данных. Удачи. -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
CPLUSPLUS |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 22.10.2003 Репутация: -1 Всего: 2 |
Я, дурак, ничего не понял, и увидел некоторые "противоречия" тут:
"Да просто база данных, расходует больше ресурсов, но работать с ней намного удобней" "так как манипуляции с данными там делаются намного быстрее и удобнее." "сколько кода нужно написать на Perl, что бы выбрать связанные данные из нескольких файлов? Сколько ресурсов при этом мы израсходуем?" Удачи тебе также. |
|||
|
||||
korob2001 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 13 Всего: 61 |
А что тут не понятного? База данных расходует больше ресурсов, но работать с ней удобнее, чем с файлом, потому использовать её например: только для счётчика посещений, не самый лучший вариант. Вобщем если быть очень кратким, то самому нужно смотреть, где и когда стоит использовать базу, а где файлы.
Но опять же, это насколько я понял вопрос. Если же я тебя не верно понял, то будь добр и потрудись перефразировать его. Какой вопрос, такой и ответ. ![]()
Вот этого я вообще не понял. Тебе не кажется, что ты задаёшь довольно пространственный вопрос, да и не в тот раздел? Лучше всех, на него тебе ответит админ такого хоста, хотя может и не ответит. У таких товарищей, как правило просто нет времени, на подобное. А лично я тебе могу сказать лишь то, что всё лимитируется и база и дисковое пространство. Это сообщение отредактировал(а) korob2001 - 1.8.2005, 06:41 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Perl: CGI программирование" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |