Портал Python-программистов

Форумы сайта python.su

Вы не зашли.

Объявление

Официальная wiki коммунити: wiki.python.su обсуждение

Официальная джаббер конференция коммунити: pythonua@conference.jabber.ru (всегда 20-35 онлайн участников). Настройки

КОД ОБОРАЧИВАТЬ В ТЕГИ [code][/code]

#1 2007-11-16 21:04:26

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

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

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

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

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

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

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

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

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


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

#2 2007-11-16 21:28:19

shiza
Питонер
Зарегистрирован: 2007-07-03
Сообщений: 1142
Профиль

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

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

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

Неактивен

 

#3 2007-11-16 21:35:24

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

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


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

#4 2007-11-16 21:39:40

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

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

Отредактированно bialix (2007-11-16 21:41:25)


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

#5 2007-11-16 21:50:39

shiza
Питонер
Зарегистрирован: 2007-07-03
Сообщений: 1142
Профиль

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

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

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

Отредактированно shiza (2007-11-16 21:59:05)

Неактивен

 

#6 2007-11-16 22:16:51

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

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


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

#7 2007-11-17 12:29:37

j2a
py-зилот
Откуда: Омск
Зарегистрирован: 2006-06-29
Сообщений: 869
Профиль  Вебсайт

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

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

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


Be easy, stay cool and follow the killer rabbit

Неактивен

 

#8 2007-11-17 13:11:26

shiza
Питонер
Зарегистрирован: 2007-07-03
Сообщений: 1142
Профиль

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

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

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

Отредактированно shiza (2007-11-17 13:17:41)

Неактивен

 

#9 2007-11-17 15:50:45

j2a
py-зилот
Откуда: Омск
Зарегистрирован: 2006-06-29
Сообщений: 869
Профиль  Вебсайт

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

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

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

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

Отредактированно j2a (2007-11-17 15:54:29)


Be easy, stay cool and follow the killer rabbit

Неактивен

 

#10 2007-11-17 17:19:10

decorator
Питонер
Зарегистрирован: 2007-04-13
Сообщений: 5
Профиль  Вебсайт

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

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

Неактивен

 

#11 2007-11-17 18:02:17

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

decorator написал:

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

Я почитал туториал на Elixir -- все прозрачно и понятно.

Однако buzhug тоже интересный выбор:

buzhug.sf.net написал:

Database speed comparisons are not easy to make. I made a limited benchmark using the same use cases as SQLite's author ; it shows that buzhug is much faster than other pure-Python modules (KirbyBase, gadfly) ; SQLite, which is implemented in C, is faster, but only less than 3 times on the average

buzhug is an Open Source software, published under the revised BSD licence

Вопрос лицензии тоже актуален. :-)


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

#12 2007-11-17 21:07:07

bialix
Команда
Откуда: Запорожье
Зарегистрирован: 2006-07-13
Сообщений: 783
Профиль  Вебсайт

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

в первой итерации попробую buzhug. расскажу потом что получилось.


--
...а ещё мы выгуливаем собак (Роберт Хайнлайн)

Неактивен

 

Board footer

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Board footer

Реклама: