Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2007 20:04:26

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Мне для работы надо (наверное) база данных. Но желательно очень попроще и чтобы я мог работать с ней через питон-интерфейс, без глубокого вникания в SQL. Есть ли такое?

Задача у меня такая:
имеется очень много (несколько гигибайт) текстовых логов системы. каждый лог маленький. но их просто очень много. логи текстовые. в них много отладочной информации для меня как программиста, но есть и собственно числовая информация о состоянии системы. Я умею читать эти логи, парсить их и вычленять существенную информацию из них. Далее эту информацию (которой будет уже намного меньше) мне надо обработать статистически: за определенный выбираемый пользователем отрезок времени посчитать минимумы, максимумы, среднее по больнице и т.п.

Парсить все это безобразие при каждом старте программы – не кошерно и идеологически неправильно. Плюс эти гигабайты дофига места на диске занимают только зря.

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

Фактически, каждый лог идентифицируется 2мя параметрами: серийный номер изделия (их у меня много) и дата/время начала-окончания лога. Можно придумать сериализовать распарсенные логи на диск – может это даже будет проще. Но тогда надо писать свою логику фильтрации данных по серийному номеру+период времени.

Поскольку во всяких там SQL я полный чайник, хочу спросить совета у гуру.

Если брать базу данных или питоновую обвертку. то мне хотелось бы, чтобы:
* не надо было ставить и запускать отдельный сервер типа PostgreSQL. Нужно автономное решение типа pysqlite. Т.е. чтобы установил одну либу и поехал. Конечное приложение затем будет паковаться при помощи py2exe и отдаваться заказчику. Инсталляция дополнительных (локальных) серверов у заказчика для меня недопустима. Все должно работать из коробки. Инсталлятор я делаю при помощи Inno Setup.
* простой и понятный питон интерфейс: разбираться с SQL запросами пока нет времени и желания
* туториал/дока на вменяемом английском, желательно на русском.

Как-то читал давно про ZODB. Вроде как это объектная база данных для питона, с питон интерфейсом. Я ничего не путаю? Может ли она мне подойти под мою задачу?



Офлайн

#2 Ноя. 16, 2007 20:28:19

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Могу порекомендовать две вещи.
Berkleydb - самая простая штука. Никаких серверов не надо ставить. Просто открываем как файл и работаем. Доступ не SQL -ый, а через методы. Для нее в питоне есть два врапера ( в станлартной поставке): dbhash и bsddb. Отличаются методами работы.

Еще есть SQLite - тоже никаких серверов. Но уже SQL интерфейс. Входит в стандартный питон 2.5.



Офлайн

#3 Ноя. 16, 2007 20:35:24

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

SQL я не хочу. я уже написал.



Офлайн

#4 Ноя. 16, 2007 20:39:40

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Наверное надо немного прояснить.
Вопрос: поможет ли мне база данных в решении задачи: выбрать некоторые данные за определенный период времени для указанного серийного номера изделия или группы номеров? Т.е. мне нужно будет получить список (или итератор) логов удовлетворяющим этим условиям.



Отредактировано (Ноя. 16, 2007 20:41:25)

Офлайн

#5 Ноя. 16, 2007 20:50:39

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Тогда какой-нибудь ORM вокруг SQL.
Например sqlalchemy вокруг SQLite =)

p.s. ORM - Object Relational Mapper. Такая штука чтоб не возится как раз с SQL



Отредактировано (Ноя. 16, 2007 20:59:05)

Офлайн

#6 Ноя. 16, 2007 21:16:51

bialix
От:
Зарегистрирован: 2006-07-13
Сообщения: 774
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

понятно. прочитал. что алхимия довольно тяжелая в понимании и освоении. а вот Elixir гораздо проще и магичнее. Стоит ли его пользовать?



Офлайн

#7 Ноя. 17, 2007 11:29:37

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Elixir – всего лишь надстройка над SQLAlchemy, для создания моделей. Запросы всё равно будут делаться средствами SQLAlchemy.

Попробуй Schevo – надстройка над ZODB/Durus.



Офлайн

#8 Ноя. 17, 2007 12:11:26

shiza
От:
Зарегистрирован: 2007-07-03
Сообщения: 1073
Репутация: +  0  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

А еще есть SQLObject и Storm =)
Они с SQLite опять-же работают =)

ZODB всетки не рекомендую. Она немного под другие задачи сделана - хранить замороженные объекты. В других случаях сильно сливает традиционным базам.



Отредактировано (Ноя. 17, 2007 12:17:41)

Офлайн

#9 Ноя. 17, 2007 14:50:45

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Настойчиво предлагаемые ORM'ы – объектные надстройки над РСУБД. Schevo - реляционная надстройка над ООБД. Так что, что в лоб, что полбу.

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

P.S. Устроишь тест Schevo@Durus/ZODB vs Storm/SQLAlchemy@SQLite будет тебе респект :)



Отредактировано (Ноя. 17, 2007 14:54:29)

Офлайн

#10 Ноя. 17, 2007 16:19:10

decorator
От:
Зарегистрирован: 2007-04-13
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Совсем ламерский вопрос про базы данных

Есть такая вещь: http://buzhug.sourceforge.net. Это даже не ORM, а чисто питоновский движок баз данных с pythonic-синтаксисом запросов. То есть вообще никакого SQL: именно то, что запрашивалось топикстартером. Сам я это не использовал, но было бы любопытно посмотреть на чужой опыт (хотя бы в рамках предлагаемого выше теста).



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version