Форум сайта python.su
0
Доброго времени суток!
В результате работы программы генерируется определенный объем информации. К каждому объекту привязан список различных значения (чисел, строковых данных, символов)
object1 (XXX1, YYY1…ZZZ1)
object2 (XXX2, YYY2…ZZZ2)
….
objectn (XXXn, YYYn…ZZZn)
возникает необходимость ее сохранения и последующей обработки.
В каком формате сохранять полученные данные?
Самый простой вариант, конечно, текстовый файл, но, наверно, не самый лучший
Слышал об XML-формате, но пока слабо разбираюсь.
Подскажите в каком направлении двигаться и к каким мануалам обратиться? На какие модули следует обратить внимание?
Офлайн
253
kukuruku11Ну это зависит от того как и чем вы хотите эти данные обрабатывать.
возникает необходимость ее сохранения и последующей обработки.
Отредактировано doza_and (Авг. 18, 2015 23:04:24)
Офлайн
0
Спасибо за ответ.
Нет, человек полученные логи читать не будет.
Данные предназначены для вывода и для обработки другими модулями программы, в перспективе.
Возможно, число данных в строке будет не одинаково для всех объектов
Поэтому БД скорее всего подойдут, скорость работы, конечно, в приоритете, но пиковых значений не нужно, это золотая середина.
Спасибо за направление, буду изучать
Офлайн
857
doza_andДа можно ввести там типы через теги. Каждое число оборачиваешь в тег, а при разборе обратно преобразуешь.
По поводу xml. Он для хранения данных непригоден. т.е. стандарт предусматривает хранение только строк, другие данные там хранить нельзя.
kukuruku11Это сериализация.
Данные предназначены для вывода и для обработки другими модулями программы
Отредактировано py.user.next (Авг. 19, 2015 00:50:20)
Офлайн
253
kukuruku11Тогда как раз базы данных не подойдут. Если только строки с разным количеством полей писать в разные таблицы и добавить поле номер записи.
Поэтому БД скорее всего подойдут
Офлайн
0
doza_and
Если модули не на питоне напишите что еще будете использовать.
Отредактировано kukuruku11 (Авг. 19, 2015 17:26:21)
Офлайн
3
Если данные, то БД, ибо она так и называется, потому что так задумана (а еще SQL рулит)
py.user.nextНе, сериализация это когда сохраняешь объект класса, чтоб потом его загрузить и юзать.
Это сериализация.
Отредактировано Iskatel (Авг. 23, 2015 21:52:32)
Офлайн
253
IskatelНе подвергая сомнению ценность изучения SQL добавлю ложечку дегтя.
а еще SQL рулит
Офлайн
857
Iskatel
Не, сериализация это когда сохраняешь объект класса, чтоб потом его загрузить и юзать.
Тут ИМХО данные, раз отложены “на потом”, это просто данные, статистика некоторая.
kukuruku11Это, конечно, расплывчатое определение, но если он заморочился xml-ом, то это явно не просто так.
Данные предназначены для вывода и для обработки другими модулями программы
doza_andВ Emacs'е используют elisp для хранения данных. На yaml перешёл недавно, а когда выбирал ещё, оказалось, что json - подмножество yaml'а.
1. Наиболее человекочитаемый формат на мой взгляд yaml http://pyyaml.org/ со временем оказалось что практически во всех приложениях для небольшого объема данных пользуюсь только им.
2. json встроенный - немного менее компактный, но более простой и гораздо более распространенный.
Отредактировано py.user.next (Авг. 24, 2015 03:18:42)
Офлайн
253
py.user.nextДля справки. Чисто питоновская реализация довольно медленная чтение в 10 раз медленнее чем json. Есть C реализация, она проигрывает json. незначительно, требует чтения мануала для установки. Однако самое неприятное что на больших файлах pyyaml нещадно жрет память. На чтение смешного документа порядка 100Mb утекает 2ГБ оперативки. Думаю это баг библиотеки, поскольку не вижу в формате причин для такого поведения. Ситуацию несколько спасает то что такие документы можно трактовать как поток документов yaml. Тогда память естественно не течет. Однако два этих фактора вместе делают библиотеку pyyaml не очень удачным выбором для оперирования с большими объемами данных.
На yaml перешёл недавно
Отредактировано doza_and (Авг. 24, 2015 21:11:01)
Офлайн