Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> организовать сохр\обход миллиона словарей 
:(
    Опции темы
kulibinka
Дата 19.3.2007, 03:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Суть задачи: есть статьи. Их количество около 1 000 000.

Для каждой из них расчитывается куча данных, сохраненных в списках\словарях.
Есть стандартная задача - пробежаться по всем этим данными и как-то их вместе обработать.

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

Но когда количество статей переваливает за несколько десятков тысяч начинаются проблемы (даже 10 000 файликов это уже довольно серьезная проблема smile ).

Само собой напрашивается использование базы данных, но для каждого поля сериализировать и при необходимости рассериализировать списки\словари каждый раз это никому не нужный и большущий расход ресурсов.

Пытался использовать pytables (которые в принципе создан для похожих задач), но он при сериализации коцает данные, и их после этого невозможно достать (да и сериализация затратная).

Возможно, есть базы данных типа pytables, но которые напрямую позволяют без проблем и прозрачно сохранять данные родных питоновских типов... А возможно нужно использовать какой-то кардинально другой способ...

Подскажите пожалуйста: как организовать сохранение и обход миллиона (или нескольких) списков\словарей на обычной машине? 

Это сообщение отредактировал(а) kulibinka - 19.3.2007, 03:28
PM MAIL   Вверх
pythonwin
Дата 19.3.2007, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(kulibinka @  19.3.2007,  06:27 Найти цитируемый пост)
Суть задачи: есть статьи. Их количество около 1 000 000.

думаю лучше субд + хорошо обдумать сериализацию
может ещё здесь помогут 
PM WWW GTalk Jabber   Вверх
Бонифаций
Дата 19.3.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



а в shelve не пробовал класть?


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
kulibinka
Дата 19.3.2007, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

а в shelve не пробовал класть?


Не пробовал... А разве при shelve.open(filename) не идет загрузка всего объекта в память?
PM MAIL   Вверх
Бонифаций
Дата 19.3.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



shelve это надстройка над dbm (или gdbm), которая позволяет в этих базах хранить pickle обьекты. так что в памяти будут те обьекты которые ты считал. 





--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
kulibinka
Дата 19.3.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Звучит по теме.
Спасибо за наводку, пошел разбираться.
PM MAIL   Вверх
pythonwin
Дата 20.3.2007, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(Бонифаций @  19.3.2007,  19:38 Найти цитируемый пост)
shelve это надстройка над dbm (или gdbm), которая позволяет в этих базах хранить pickle обьекты. так что в памяти будут те обьекты которые ты считал. 

а для этой задачи ZODB использовать можно ?
PM WWW GTalk Jabber   Вверх
kulibinka
Дата 21.3.2007, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

а для этой задачи ZODB использовать можно ? 


Второй день думаю над вопросом, так и ничего и не придумал smile
Можно по другому вопрос поставить?
PM MAIL   Вверх
pythonwin
Дата 21.3.2007, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 14
Всего: 36



Цитата(kulibinka @  21.3.2007,  17:34 Найти цитируемый пост)

Второй день думаю над вопросом, так и ничего и не придумал smile
Можно по другому вопрос поставить? 

а может просто озвучишь всю задачу
пока вижу решение в том чтобы использовать субд + сериализацию использовать минимальное кол-во раз == один раз твои файлики просто записать в БД, если они имеют определенную структуру (думаю именно так)
smile
PM WWW GTalk Jabber   Вверх
kulibinka
Дата 21.3.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Цитата

а может просто озвучишь всю задачу

да задачу я, кажется, озвучил в первом посте. Или там что-то неописано?

Цитата

пока вижу решение в том чтобы использовать субд + сериализацию использовать минимальное кол-во раз == один раз твои файлики просто записать в БД, если они имеют определенную структуру (думаю именно так)

Ну, других решений я пока тоже не вижу.
"сериализацию использовать минимальное кол-во раз" - ну а как сделать чтобы минимальное? Я ведь в файликах информацию сериализовал, но это некрасиво каждый раз ее рассериализировать - неоптимально...


Цитата

а для этой задачи ZODB использовать можно


А как связаны ZODB (насколько я понял, это  база данных для zope) и эта задача?
PM MAIL   Вверх
dvska
Дата 26.3.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 30.1.2006

Репутация: 6
Всего: 9



Цитата(kulibinka @ 21.3.2007,  15:10)
Цитата

а для этой задачи ZODB использовать можно


А как связаны ZODB (насколько я понял, это  база данных для zope) и эта задача?

ZODB это pythonic ООДБ, да, изначально cозданная для Zope. 
Можно посмотреть также в сторону Durus http://www.mems-exchange.org/software/durus/
--------------------
PM MAIL   Вверх
kulibinka
Дата 26.3.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Спасибо за Durus, обязательно попробую.
PM MAIL   Вверх
dvska
  Дата 28.3.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 30.1.2006

Репутация: 6
Всего: 9



kulibinka, когда что-нибудь получится, поделись опытом! 
--------------------
PM MAIL   Вверх
kulibinka
Дата 28.3.2007, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



Как всегда - обязательно smile
PM MAIL   Вверх
dvska
  Дата 30.3.2007, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 182
Регистрация: 30.1.2006

Репутация: 6
Всего: 9



А ещё бывают PyPersyst и Schevo ;)

Это сообщение отредактировал(а) dvska - 30.3.2007, 18:51
--------------------
PM MAIL   Вверх
kulibinka
Дата 30.3.2007, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 20.11.2006

Репутация: 2
Всего: 4



И это очень хорошо, спасибо smile
Я сейчас добью одну "горящую" задачу, и тогда можно будет с чистой совестью и в полную силу приступить к испытаниям.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.