Реклама на сайте Advertise with us
Тема: Совет по датабазам нужен. Расширенный поиск по форуму
 
Внимание! В связи с устареванием топика эта страница была взята из кэша.
Автор Сообщение
Информация о пользователе bog


Зарегистрирован: 07.11.02
Сообщения: 1595
Ссылка на сообщениеДобавлено: 19/10/03 в 19:02     

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

база хранится в простом текстовом файле, который полностью читается в память и обрабатывается с помощью РНР скрипта.

но в будущем размер файла вырастет ориентировочно до 300-500кб,
вопрос, в каком формате лучше всего создавать базу данных и в чем писать скрипт для поиска чтоб достигнуть максимального быстродействия ?

K началу

 
Информация о пользователе Weber


Зарегистрирован: 03.10.03
Сообщения: 1276
Ссылка на сообщениеДобавлено: 19/10/03 в 19:22     

ИМХО текстовая база не так уж плоха, как ее порой представляют... самое простое решение для хранения инфы...
Язык, который бы я использовал для обработки текстового файла - perl - он именно для такого и создавался.
А вот по поводу быстродействия можешь особо не волноваться 300-500кб - не так много %)
Была тут одна задача... нужно было файлик обработать... и весил он 87Мб %) Минуты две его скрипт обрабатывал.... скрипт на перле был... на си - такой же скрипт работал дольше (я специально два сделал) %)

K началу

 
Информация о пользователе lega_cobra


Зарегистрирован: 21.09.03
Сообщения: 229
Ссылка на сообщениеДобавлено: 19/10/03 в 19:30     

Weber писал:
ИМХО текстовая база не так уж плоха, как ее порой представляют... самое простое решение для хранения инфы...
Язык, который бы я использовал для обработки текстового файла - perl - он именно для такого и создавался.
А вот по поводу быстродействия можешь особо не волноваться 300-500кб - не так много %)
Была тут одна задача... нужно было файлик обработать... и весил он 87Мб %) Минуты две его скрипт обрабатывал.... скрипт на перле был... на си - такой же скрипт работал дольше (я специально два сделал) %)


Видимо плохо сделал icon_smile.gif

K началу

 
Информация о пользователе Stek


Зарегистрирован: 24.10.02
Сообщения: 719
Ссылка на сообщениеДобавлено: 19/10/03 в 20:05     

вообще то пхп изначально плохо работал и работает с большими объемами текстовых данных.
Не его это дело файлы парсить.

K началу

 
Информация о пользователе DiamondRoads


Зарегистрирован: 15.10.03
Сообщения: 20
Ссылка на сообщениеДобавлено: 19/10/03 в 21:28     

Скорее всего скажу банальнейшую вешь, но лучше переходить на MySQL. Быстрее особо не будет, но зато снимется головная боль с блокировками файла при одновременном добавлении инфы.
А если ещё разбить базу на таблицы (нормализовать) и отказаться (по возможности) от регулярных выражений, то будет и быстро и с запасом на объем данных. MySQL это не сложно и действительно стоит того, чтобы изучить.

Впрочем, если это не веб-применение и основная задача только выборка по regexp, то текст и перл действительно верный выбор.

K началу

 
Информация о пользователе Weber


Зарегистрирован: 03.10.03
Сообщения: 1276
Ссылка на сообщениеДобавлено: 19/10/03 в 21:32     

lega_cobra писал:
Weber писал:
ИМХО текстовая база не так уж плоха, как ее порой представляют... самое простое решение для хранения инфы...
Язык, который бы я использовал для обработки текстового файла - perl - он именно для такого и создавался.
А вот по поводу быстродействия можешь особо не волноваться 300-500кб - не так много %)
Была тут одна задача... нужно было файлик обработать... и весил он 87Мб %) Минуты две его скрипт обрабатывал.... скрипт на перле был... на си - такой же скрипт работал дольше (я специально два сделал) %)


Видимо плохо сделал icon_smile.gif


Посоревнуемся?
Сделал - в лучших традициях алгоритмизации... даже книжки доставал %)

K началу

 
Информация о пользователе lega_cobra


Зарегистрирован: 21.09.03
Сообщения: 229
Ссылка на сообщениеДобавлено: 19/10/03 в 21:36     

Weber писал:

Посоревнуемся?
Сделал - в лучших традициях алгоритмизации... даже книжки доставал %)


Ну разве если только призы богатые победителю будут icon_smile.gif
Вообще-то сам перл на си написан icon_smile.gif

K началу

 
Информация о пользователе savs


Зарегистрирован: 08.12.02
Сообщения: 1321
Ссылка на сообщениеДобавлено: 19/10/03 в 22:11     

lega_cobra писал:
Вообще-то сам перл на си написан icon_smile.gif

а пхп на визуал бейсике написан, хм... icon_smile.gif icon_smile.gif icon_smile.gif

K началу

 
Информация о пользователе bog


Зарегистрирован: 07.11.02
Сообщения: 1595
Ссылка на сообщениеДобавлено: 19/10/03 в 23:44     

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

K началу

 
Информация о пользователе lega_cobra


Зарегистрирован: 21.09.03
Сообщения: 229
Ссылка на сообщениеДобавлено: 20/10/03 в 00:05     

bog писал:
скорость и требования к ресурсам критичны так как планируется что к скрипту будут сотни тысяч обращений в сутки.
писать в файл т.е. базу абсолютно ничего не надо.


При таких размерах базы и структуре ничего лучше простого текстового файла не придумать. Сервер, я так понимаю, под юникс-лайк будет? И это при каких-то жалких сотнях тысяч обращений в сутки? icon_smile.gif Один фиг, при частом обращении он будет в кешах сидеть постоянно. Правда вот от "визуал-php" надо уходить.

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1376
Ссылка на сообщениеДобавлено: 20/10/03 в 00:25     

Последнее время ознакомился с INNODB. Базарят рульная вещь.
Выдержка из мануала:

Цитата:

InnoDB has been designed for maximum performance when processing large data volumes. Its CPU efficiency is probably not matched by any other disk-based relational database engine.


HOWTO (MySQL manual)

Цитата:

expr REGEXP pat
expr RLIKE pat
Performs a pattern match of a string expression expr against a pattern pat. The pattern can be an extended regular expression. See section G MySQL Regular Expressions. Returns 1 if expr matches pat, otherwise returns 0. RLIKE is a synonym for REGEXP, provided for mSQL compatibility. Note: Because MySQL uses the C escape syntax in strings (for example, `\n'), you must double any `\' that you use in your REGEXP strings. As of MySQL Version 3.23.4, REGEXP is case-insensitive for normal (not binary) strings:
mysql> SELECT 'Monty!' REGEXP 'm%y%%';
-> 0
mysql> SELECT 'Monty!' REGEXP '.*';
-> 1
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
-> 1
mysql> SELECT "a" REGEXP "A", "a" REGEXP BINARY "A";
-> 1 0
mysql> SELECT "a" REGEXP "^[a-d]";
-> 1

REGEXP and RLIKE use the current character set (ISO-8859-1 Latin1 by default) when deciding the type of a character.
expr NOT REGEXP pat
expr NOT RLIKE pat
Same as NOT (expr REGEXP pat).

K началу

 
Информация о пользователе Stek


Зарегистрирован: 24.10.02
Сообщения: 719
Ссылка на сообщениеДобавлено: 20/10/03 в 01:41     

InnoDB будет в скорости выигрывать при объемах от гига и более.

А то что от пхп уходить ... я сейчас себе "а ля тумбокрут" придумываю, так на довольно сложном алгоритме расчета 1.5Ghz комп 10к обращений за данными делает в течении 26-30 секунд.

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1376
Ссылка на сообщениеДобавлено: 20/10/03 в 01:44     

Ну ХАУТУ по крайней мере пригодится. Это ведь и к мускулю относится.

K началу

 
Информация о пользователе Dandy


Зарегистрирован: 20.10.03
Сообщения: 1
Ссылка на сообщениеДобавлено: 20/10/03 в 02:08     

-try varchar
-read mysql->manual->optimize
-hashkeys

K началу

 
Информация о пользователе Weber


Зарегистрирован: 03.10.03
Сообщения: 1276
Ссылка на сообщениеДобавлено: 20/10/03 в 04:17     

Пентарх, ИМХО ИнноДБ это для серьезных баз уже... а 300-500кб это так себе %)

Хотя... можно ведь поэксперементировать.... написать два варианта и время записывать.... будет полезно %)
Научную работу напишете на эту тему...

K началу

 
Информация о пользователе DiamondRoads


Зарегистрирован: 15.10.03
Сообщения: 20
Ссылка на сообщениеДобавлено: 20/10/03 в 08:03     

bog писал:
скорость и требования к ресурсам критичны так как планируется что к скрипту будут сотни тысяч обращений в сутки.


Я бы сделал в виде базы данных (а не одной таблицы с данными).
Перебор всех данных с выборкой через regexp - самое медленное, что можно придумать.
На домашнем сервере у меня запрос
SELECT * FROM table WHERE field REGEXP 'q(.+)qw[a-g]+'
выполняется полсекунды (в таблице 7к строк по 70байт, т.е. как раз "500кб данных"). Сотня вызовов в сутки подразумевает вызов скрипта каждую секунду. Сотни вызовов - несколько раз в секунду.
Вот и думайте, загружать сервер стоимостью в $xxxx, или заплатить программисту $xx-$2xx, чтобы переделать структуру данных.

Раз уж пошел эксперимент, перебор данных без регулярных выражений
SELECT * FROM table WHERE field LIKE '%q%qw%'
уже 0.15с
Соответственно, при успешной реорганизации данных будет поиск чисел в индексных полях и доли секунды (десятые или сотые) по времени.

Кстати, какой тип таблицы выбрать - InnoDB или родной MyISAM - это уже дело завершающего эксперимента. Переключение между типами таблиц происходит одной команой.

K началу

 
Информация о пользователе Pentarh


Зарегистрирован: 05.04.03
Сообщения: 1376
Ссылка на сообщениеДобавлено: 20/10/03 в 16:15     

Значит ... Перл! smail21.gif

K началу

 
Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!
Внимание! В связи с устареванием топика эта страница была взята из кэша.

Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »