bialix
Ноя. 16, 2007 20:04:26
Мне для работы надо (наверное) база данных. Но желательно очень попроще и чтобы я мог работать с ней через питон-интерфейс, без глубокого вникания в SQL. Есть ли такое?
Задача у меня такая:
имеется очень много (несколько гигибайт) текстовых логов системы. каждый лог маленький. но их просто очень много. логи текстовые. в них много отладочной информации для меня как программиста, но есть и собственно числовая информация о состоянии системы. Я умею читать эти логи, парсить их и вычленять существенную информацию из них. Далее эту информацию (которой будет уже намного меньше) мне надо обработать статистически: за определенный выбираемый пользователем отрезок времени посчитать минимумы, максимумы, среднее по больнице и т.п.
Парсить все это безобразие при каждом старте программы – не кошерно и идеологически неправильно. Плюс эти гигабайты дофига места на диске занимают только зря.
Вот и подумалось, что надо распарсенные данные куда-то сохранять в виде, удобном для последующей быстрой обработки. Есть подозрение, что мне нужна какая-то база данных.
Фактически, каждый лог идентифицируется 2мя параметрами: серийный номер изделия (их у меня много) и дата/время начала-окончания лога. Можно придумать сериализовать распарсенные логи на диск – может это даже будет проще. Но тогда надо писать свою логику фильтрации данных по серийному номеру+период времени.
Поскольку во всяких там SQL я полный чайник, хочу спросить совета у гуру.
Если брать базу данных или питоновую обвертку. то мне хотелось бы, чтобы:
* не надо было ставить и запускать отдельный сервер типа PostgreSQL. Нужно автономное решение типа pysqlite. Т.е. чтобы установил одну либу и поехал. Конечное приложение затем будет паковаться при помощи py2exe и отдаваться заказчику. Инсталляция дополнительных (локальных) серверов у заказчика для меня недопустима. Все должно работать из коробки. Инсталлятор я делаю при помощи Inno Setup.
* простой и понятный питон интерфейс: разбираться с SQL запросами пока нет времени и желания
* туториал/дока на вменяемом английском, желательно на русском.
Как-то читал давно про ZODB. Вроде как это объектная база данных для питона, с питон интерфейсом. Я ничего не путаю? Может ли она мне подойти под мою задачу?
shiza
Ноя. 16, 2007 20:28:19
Могу порекомендовать две вещи.
Berkleydb - самая простая штука. Никаких серверов не надо ставить. Просто открываем как файл и работаем. Доступ не SQL -ый, а через методы. Для нее в питоне есть два врапера ( в станлартной поставке): dbhash и bsddb. Отличаются методами работы.
Еще есть SQLite - тоже никаких серверов. Но уже SQL интерфейс. Входит в стандартный питон 2.5.
bialix
Ноя. 16, 2007 20:35:24
SQL я не хочу. я уже написал.
bialix
Ноя. 16, 2007 20:39:40
Наверное надо немного прояснить.
Вопрос: поможет ли мне база данных в решении задачи: выбрать некоторые данные за определенный период времени для указанного серийного номера изделия или группы номеров? Т.е. мне нужно будет получить список (или итератор) логов удовлетворяющим этим условиям.
shiza
Ноя. 16, 2007 20:50:39
Тогда какой-нибудь ORM вокруг SQL.
Например sqlalchemy вокруг SQLite =)
p.s. ORM - Object Relational Mapper. Такая штука чтоб не возится как раз с SQL
bialix
Ноя. 16, 2007 21:16:51
понятно. прочитал. что алхимия довольно тяжелая в понимании и освоении. а вот Elixir гораздо проще и магичнее. Стоит ли его пользовать?
j2a
Ноя. 17, 2007 11:29:37
Elixir – всего лишь надстройка над SQLAlchemy, для создания моделей. Запросы всё равно будут делаться средствами SQLAlchemy.
Попробуй
Schevo – надстройка над ZODB/Durus.
shiza
Ноя. 17, 2007 12:11:26
А еще есть SQLObject и Storm =)
Они с SQLite опять-же работают =)
ZODB всетки не рекомендую. Она немного под другие задачи сделана - хранить замороженные объекты. В других случаях сильно сливает традиционным базам.
j2a
Ноя. 17, 2007 14:50:45
Настойчиво предлагаемые ORM'ы – объектные надстройки над РСУБД. Schevo - реляционная надстройка над ООБД. Так что, что в лоб, что полбу.
bialix, если правильно сдизайнишь, то можно будет поменять бэкенд хранения без правки кода.
P.S. Устроишь тест Schevo@Durus/ZODB vs Storm/SQLAlchemy@SQLite будет тебе респект :)
decorator
Ноя. 17, 2007 16:19:10
Есть такая вещь:
http://buzhug.sourceforge.net. Это даже не ORM, а чисто питоновский движок баз данных с pythonic-синтаксисом запросов. То есть вообще никакого SQL: именно то, что запрашивалось топикстартером. Сам я это не использовал, но было бы любопытно посмотреть на чужой опыт (хотя бы в рамках предлагаемого выше теста).