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

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

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

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

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

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

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

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

Еще есть SQLite - тоже никаких серверов. Но уже SQL интерфейс. Входит в стандартный питон 2.5.
bialix
SQL я не хочу. я уже написал.
bialix
Наверное надо немного прояснить.
Вопрос: поможет ли мне база данных в решении задачи: выбрать некоторые данные за определенный период времени для указанного серийного номера изделия или группы номеров? Т.е. мне нужно будет получить список (или итератор) логов удовлетворяющим этим условиям.
shiza
Тогда какой-нибудь ORM вокруг SQL.
Например sqlalchemy вокруг SQLite =)

p.s. ORM - Object Relational Mapper. Такая штука чтоб не возится как раз с SQL
bialix
понятно. прочитал. что алхимия довольно тяжелая в понимании и освоении. а вот Elixir гораздо проще и магичнее. Стоит ли его пользовать?
j2a
Elixir – всего лишь надстройка над SQLAlchemy, для создания моделей. Запросы всё равно будут делаться средствами SQLAlchemy.

Попробуй Schevo – надстройка над ZODB/Durus.
shiza
А еще есть SQLObject и Storm =)
Они с SQLite опять-же работают =)

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

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

P.S. Устроишь тест Schevo@Durus/ZODB vs Storm/SQLAlchemy@SQLite будет тебе респект :)
decorator
Есть такая вещь: http://buzhug.sourceforge.net. Это даже не ORM, а чисто питоновский движок баз данных с pythonic-синтаксисом запросов. То есть вообще никакого SQL: именно то, что запрашивалось топикстартером. Сам я это не использовал, но было бы любопытно посмотреть на чужой опыт (хотя бы в рамках предлагаемого выше теста).
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB