|
|
|
Вопрос по алгоритму
|
|||
|---|---|---|---|
|
#18+
Делаю скрипт на Perl, который работает с внешним сервисом через API. Для нормальной работы нужно закешировать часть данных сервиса; кешируются таблицы сущностей, а также таблицы связей. Например есть сущности profile и media со своим набором атрибутов. Также есть таблица profile_media, в которой определены связи (поля profile_id и media_id), а также некоторые дополнительные атрибуты (index, disabled). Все три таблицы у меня закешированы, первые две в виде хеша массивов (rows = { id1=>@row1, id2=>@row2, ... }), третья в виде массива массивов (rows = [ @row1, @row2, ... ]). Из третьей таблицы я хочу получить два хеша, чтобы было удобно проверять наличие связей: $profile_link->{$profile_id}->{$media_id} = [$index,$disabled] $media_link->{$media_id}->{$profile_id} = [$index,$disabled] Как бы вы это сделали? ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2012, 11:34:31 |
|
||
|
Вопрос по алгоритму
|
|||
|---|---|---|---|
|
#18+
Мои предложения. 1. Цикл по всем таблицам. 2. Для каждой таблицы получить список FK. Количество FK будет определять вложенность хешей. 3. Если FK в таблице отсутствуют, то переход к следующей итерации цикла. 4. Использовать рекурсивную функцию вида &filter($href_dataset,$filter,$href_result), которая будет группировать $href_dataset по полю $filter, результат сохранять в href_result и вызывать рекурсию, передавая $href_result в качестве $href_dataset. Чтобы избежать зацикливания, из $href_dataset будут исключены элементы, соответствующие $filter. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2012, 11:43:54 |
|
||
|
|

start [/forum/search_topic.php?author=timesolv&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
36ms |
get tp. blocked users: |
2ms |
| others: | 723ms |
| total: | 890ms |

| 0 / 0 |
