Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Выборка и работа с 70.000 записями


Автор: DimaSiK 2.10.2008, 11:11
Работаю с Firebird. Как лучше работать с таким огромным количеством данных. Как организовывать выборку и навигацию по всем записям. ВЫбирать ли данные как-то странично?

Автор: MoLeX 2.10.2008, 11:15
Цитата(DimaSiK @  2.10.2008,  11:11 Найти цитируемый пост)
ВЫбирать ли данные как-то странично? 

а нам откуда знать выбирать тебе постранично или нет! ты уж сам определись пожалуйста

Автор: DimaSiK 2.10.2008, 11:19
Если мне допустим нужно распечатать все 70.000 записей, то как быт ьв этом случае?

Автор: MoLeX 2.10.2008, 11:22
вижу два пути
1. берем все данные и выводим
2. берем определенное кол-во данных, печатаем и т.д. пока не закончатся

Автор: Kesh 2.10.2008, 11:53
При работе с больщим количеством данных обращайте внимание на оптимальность выборки и количестве данных передаваемых по сети... Приемы оптимизации стандартные - выбирать и передавать только то, что нужно...

Вопрос в том, как вы собираетесь печатать...

Автор: DimaSiK 2.10.2008, 20:05
Мне иногда нужно выбрать 20.000, иногда все записи. Послеа этого как-то с ними работать, возможно запихнуть в сессию, а потом обратно их закинуть в БД. Все это нагружает приложения до безобразия и оно очень медлено работаетю Иногда вылетает ексепшин по переполнению памяти.

Автор: bars80080 2.10.2008, 20:12
вот хоть убей, не вижу в этом смысла. неужели во всех 20000 записях вносятся уникальные изменения, которые нельзя систематизировать и изменить с помощью нескольких управляющих значений?

Автор: Kesh 2.10.2008, 20:12
DimaSiK, Делайте постраничный вывод... Скажем по 50 записей...

Автор: Nigel 2.10.2008, 21:40
А можно узнать задачу, где необходим вывод 20.000 записей сразу?

Автор: krundetz 2.10.2008, 22:00
DimaSiK, упомянутая тобой СУБД может держать и несколько миллионов записей в базе данных и спокойно с ними работать.

Вопрос в ограничениях PHP. Он просто не предназначен для работы с таким обемом данных. Собственно для хранения данных и нужна СУБД, а скрипты нужны для управления работой СУБД, они должны сказать какие данные и как изменить, а уже изменять их можно при помощи СУБД. В общем думаю у тебя ошибка в области реализации задачи. Прежде всего определись а зачем извлекать сразу столько данных?

Автор: DimaSiK 3.10.2008, 16:58
Допустим мне нужно вывести все данные из БД в файлик csv или xml формата для дальнейшего экспорта.

Автор: bars80080 3.10.2008, 17:21
Цитата(DimaSiK @  3.10.2008,  16:58 Найти цитируемый пост)
Допустим мне нужно вывести все данные из БД в файлик csv или xml формата для дальнейшего экспорта. 

это вопрос?
вывод делается просто fopen($file,'w'); fwrite(); что в первом, что во втором случае

а причём здесь правка 20000 записей одновременно?

Автор: Nigel 3.10.2008, 21:08
Цитата(DimaSiK @ 3.10.2008,  16:58)
Допустим мне нужно вывести все данные из БД в файлик csv или xml формата для дальнейшего экспорта.

Экспорт в файл для дальнейшего экспорта? По-моему, бредово звучит..
Для записи данных из бд в файл используется  SELECT ... INTO OUTFILE

Автор: krundetz 3.10.2008, 23:11
Цитата(DimaSiK @ 3.10.2008,  16:58)
Допустим мне нужно вывести все данные из БД в файлик csv или xml формата для дальнейшего экспорта.

А в чем сдесь сложность? Берешь получаешь все данные и записываешь их все в файл в нужном тебе виде. Если боишся что возможна нехватка памяти возми и запиши данные в несколько приемов. Тоесть сначала записываешь допустим 5000 данных в файл потом еще 5000 и т.д. пока все данные не будут записаны в файл. Сложность возможна только в том случае если у тебя все операции не будут укладываться во время отведенное для работы скрипта по умолчанию(30 секунд) и не будет возможности это время увеличить.

Автор: DimaSiK 4.10.2008, 08:03
[QUOTE=krundetz,3.10.2008,  23:11]
Цитата(DimaSiK @ 3.10.2008,  16:58)
Сложность возможна только в том случае если у тебя все операции не будут укладываться во время отведенное для работы скрипта по умолчанию(30 секунд) и не будет возможности это время увеличить.

Да именно в этом и есть сложность. Вермя увы увеличить нельзя. 

Автор: krundetz 5.10.2008, 10:00
DimaSiK,  виртуальный хостинг не самая удобная вешь для столь маштабных проектов, может следует подумать о виртальном выделеном сервере или попытатся найти виртуальный хостинг с возможностью изменения времени работы скрипта.

Автор: DimaSiK 5.10.2008, 19:07
Как вариант - да. Но разве по-другому нельзя реализовать?

Автор: krundetz 6.10.2008, 11:00
Нужно более конкретно смотреть что требуется какие данные в каком виде и куда ты хочешь их поместить, может можно что то еще сдеалть, но в современном мире дешевле проопгрейдить железную часть чем оптимизировать код.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)