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