Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Хранение информации


Автор: alligator 30.8.2014, 15:49
Всем доброго времени суток.
Есть куча с сайтов с xml данными, собираю файлики через cUrl, по количеству их ~700
Вопрос,  как лучше хранить полученную информацию?
1. Парсить в массив и распихивать по полям\таблицам?
2. Просто хранить полученный XML? если да то в каком типе поля лучше хранить

в дальнейшем потребуется обработка информации из этих файлов

Автор: ТоляМБА 30.8.2014, 17:12
alligator, если потом будешь обрабатывать, то первый вариант.

Автор: Aliance 1.9.2014, 08:49
Лучше бы более-менее полностью задачу описать. Что парсится, как используется потом, etc...

Автор: alligator 1.9.2014, 09:00
Цитата(Aliance @  1.9.2014,  09:49 Найти цитируемый пост)
Лучше бы более-менее полностью задачу описать. Что парсится, как используется потом, etc... 


Есть множество файлов вида :
Код

<?xml version="1.0" encoding="WINDOWS-1251"?>
<CredOrgDepRate Title="Информация  о  процентных  ставках по договорам банковского  вклада с физическими лицами" DocDate="07.2014" ver="1.0">
<Org RegNum="3286" Name="ООО &quot;Дагэнергобанк&quot;">
<DepositsRub Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в российских рублях (в процентах годовых)">
<CallDep Title="До востребования">1,450</CallDep>
<Dep90 Title="На срок до 90 дней">5,671</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">7,340</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">11,500</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">12,212</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">13,601</Dep3up>
</DepositsRub>
<DepositsUSD Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в долларах США (в процентах годовых)">
<CallDep Title="До востребования">-</CallDep>
<Dep90 Title="На срок до 90 дней">-</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">3,531</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">-</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">5,182</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">-</Dep3up>
</DepositsUSD>
<DepositsEur Title="По срокам согласно заключенным договорам банковского вклада с физическими лицами в евро (в процентах годовых)">
<CallDep Title="До востребования">-</CallDep>
<Dep90 Title="На срок до 90 дней">-</Dep90>
<Dep91-180 Title="На срок от 91 до 180 дней">-</Dep91-180>
<Dep181-1 Title="На срок от 181 до 1 года">-</Dep181-1>
<Dep1-3 Title="На срок от 1 года до 3 лет">-</Dep1-3>
<Dep3up Title="На срок свыше 3 лет">-</Dep3up>
</DepositsEur>
</Org>
</CredOrgDepRate>


В будущем планируется делать выборку информации по разным банкам, сортировка по типу вклада и др. сортировки.


Предварительно вижу структуру базы такую:

Таблица Банков: uid \ regnum \ name \ docdate
3 таблицы валют:
rur bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate
usd bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate
eur bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate

Автор: ksnk 1.9.2014, 10:15
alligator, Срочные вклады на несколько месяцев не рассматриваются? На сроки не в 3, а в 5 лет тоже?
Все xml от всех банков унифицированны по тегам xml?

Нужно бы формировать более гибкую схему хранения данных.
Ну или постоянно дорабатывать структуру

Автор: alligator 1.9.2014, 10:41
Цитата(ksnk @  1.9.2014,  11:15 Найти цитируемый пост)
Все xml от всех банков унифицированны по тегам xml?

Xml - везде одинаковый
Цитата(ksnk @  1.9.2014,  11:15 Найти цитируемый пост)
 На сроки не в 3, а в 5 лет тоже?

3 и более - согласно данным из xml

Добавлено через 1 минуту и 30 секунд
Цитата(ksnk @  1.9.2014,  11:15 Найти цитируемый пост)
Срочные вклады на несколько месяцев не рассматриваются?

согласно данным из xml  - только вклады до 90 дней

Автор: ТоляМБА 1.9.2014, 10:47
Цитата(alligator @  1.9.2014,  11:00 Найти цитируемый пост)
3 таблицы валют:
rur bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate
usd bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate
eur bankuid \ calldep \ up90 \ 91-180 \ 181-1 \ 1-3 \ 3 \ docdate

первая таблица Valute
id nValute
1  rur
2  usd
3  eur
вторая таблица calldep
id  nCalldep
1   До востребования
Третья таблица bank
id  nBank
1   Дагэнергобанк
Четвертая таблица RegNum
id  nRegNum
1  3286
Пятая таблица srok (тут придется повозиться с унификацией периодов, но если для всех банков одинаковые периоды тогда так:)
id nSrok
1  up90
2  91-180
3  181-1
4  1-3
5  3
Шестая таблица All
id  bankId  regnumId  calldepId valuteId srokId Value docdate
где value - соответствующее значение ставки.

На предоставленных тобой данных мое видение такое.

Автор: alligator 1.9.2014, 11:30
Тогда получается что-то типа того:

1. Банк                                -> uid \ name
2. Регистрационный номер   -> bankuid \ regnum
3. валюта                             -> uid \ currency_type
 Значения:
rur
usd
eur

4. тип вклада                       -> currency_uid \ type
 Значения:
up90
91-180
81-1
1-3
3

5. дата                                -> uid \ currency_uid \ type_uid \ bank_uid

6. Данные по ставкам                           -> uid \ currency_uid \ type_uid \ date_uid \rate

ставка 1 \валюта 1 \ дата \10%
ставка 2 \валюта 2 \ дата \1%
ставка 3 \валюта 2 \ дата \7%

Автор: Aliance 1.9.2014, 14:12
Эм, а данные, которые парсятся в XML - разве неизменные/редко изменяемые? Если да - то зачем нужен XML, конечно нужно хранить в удобном вам виде у себя в БД. Но мне что-то подсказывает, что данные динамически, в таком случае либо парсить при каждом обращении к скрипту (плоховато) / кешировать у себя локально и обновлять, скажем, кроном раз в несколько минут/часов/дней.

Думаю все же тему перенести в раздел по MySQL...

Автор: alligator 1.9.2014, 19:07
Цитата(Aliance @  1.9.2014,  15:12 Найти цитируемый пост)
Думаю все же тему перенести в раздел по MySQL... 

согласен


Цитата(Aliance @  1.9.2014,  15:12 Найти цитируемый пост)
Эм, а данные, которые парсятся в XML - разве неизменные/редко изменяемые? Если да - то зачем нужен XML, конечно нужно хранить в удобном вам виде у себя в БД. Но мне что-то подсказывает, что данные динамически, в таком случае либо парсить при каждом обращении к скрипту (плоховато) / кешировать у себя локально и обновлять, скажем, кроном раз в несколько минут/часов/дней.

Данные будут обновлятся примерно раз в месяц или вручную
Просто нужна оптимальная структура БД

Автор: Aliance 2.9.2014, 08:16
Раз в месяц это редко. Тогда незачем хранить XML. Ведь обращаться к данным скрипт будет явно чаще раза в месяц, а значит уйдут лишние операции по парсингу XML, плюс доступна будет сортировка с поиском.

Автор: frops 19.9.2014, 11:19
А можно еще формировать csv и его по крону запихивать в БД. Думаю, что вы знаете как )

Автор: tzirechnoy 20.9.2014, 08:16
700 файлов? Я бы, для начала, просто свалил их в одну папку, и ковырял по мере необходимости чем-то вроде xsl. Вместе с make. А когда типичные операцыи станут привычными, а торможэние -- неприятным -- тогда и подумал бы об оптимизацыи опреацый вроде засовывания всего или частотребуемых вещей в RDBMS.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)