The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Атомарность выполнения и хеши в Perl"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Атомарность выполнения и хеши в Perl"
Сообщение от Eveny emailИскать по авторуВ закладки on 27-Июл-04, 23:37  (MSK)
1)Как можно реализовать атомарность сохранения данных, есть два очень больших массива данных, один надо загнать в хеш, а другой в DB, так чтобы выполнялась атомарность, т.е. либо все, либо ничего... Получается, что если массивы перегонять циклами, и вдруг по тайм ауту скрипт вырубится...
2)Может, я чего не понимаю, но при использовании не очень больших хешей (300-400 записей) в перле 5.8.0, периодически из хеша при некоторых ключах, не выдается значение... т.е. при foreach $key (sort keys %some_hash) некоторые значения не выдаются... $some_hash{$key}="", хотя при повторном прогоне они появляются... Может дело в оборудовании, т.к. на более мощной машинке таких глюков нет...
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Атомарность выполнения и хеши в Perl"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 28-Июл-04, 19:24  (MSK)
>1)Как можно реализовать атомарность сохранения данных, есть два очень больших массива данных,
>один надо загнать в хеш, а другой в DB, так чтобы
>выполнялась атомарность, т.е. либо все, либо ничего... Получается, что если массивы
>перегонять циклами, и вдруг по тайм ауту скрипт вырубится...
>2)Может, я чего не понимаю, но при использовании не очень больших хешей
>(300-400 записей) в перле 5.8.0, периодически из хеша при некоторых ключах,
>не выдается значение... т.е. при foreach $key (sort keys %some_hash) некоторые
>значения не выдаются... $some_hash{$key}="", хотя при повторном прогоне они появляются... Может
>дело в оборудовании, т.к. на более мощной машинке таких глюков нет...
>

В первом случае - никаких специальных средств нет.
Для второго случая - да, дело в памяти !

Кто же для решеиня такой задачи использует такое средство ? оно тут не к месту, IMHO


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Атомарность выполнения и хеши в Perl"
Сообщение от Evgeny emailИскать по авторуВ закладки(??) on 28-Июл-04, 22:01  (MSK)
>Кто же для решеиня такой задачи использует такое средство ? оно тут
>не к месту, IMHO

А какие есть варианты, надо распарсить по шаблонам базу товаров фирмы (которая хранится в файлах) и загнать в DB.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Атомарность выполнения и хеши в Perl"
Сообщение от ihor Искать по авторуВ закладки on 29-Июл-04, 09:56  (MSK)
нужно, чтобы скрипт вёл "журнал" на диске (отмечал, что уже сделано) и обновлял его после каждой успешно обработаной части. в таком случае, даже если скрипт завалится, можно будет просто продолжить с того места, где остановились.
я так понтмаю, это нужно проделать один раз, т.е. время не имеет значения, в таком случае, можно решить проблему с нехваткой памяти, реализуя хеши на файловой системе, т.е. ключу соотв. имя файла, его содеожимое - значению.

кроме того такой хеш (вместе с журналом) будет устойчив к падению скрипта,
т.е. можно будет продолжить с того места где завалились.

можно, конечно, для этого использовать SQL-сервер. т.е. за первый проход парсить данные не в память, а некот. промежуточные таблицы, а за второй, когда уверены, что все данные на месте, из этих промежуточных таблиц собрать окончательные.


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Атомарность выполнения и хеши в Perl"
Сообщение от Vladislav Lazarenko emailИскать по авторуВ закладки on 29-Июл-04, 12:15  (MSK)
>>Кто же для решеиня такой задачи использует такое средство ? оно тут
>>не к месту, IMHO
>
>А какие есть варианты, надо распарсить по шаблонам базу товаров фирмы (которая
>хранится в файлах) и загнать в DB.

Ну, допустим, если это Oracle, то есть SQL*Loader ...
Так же существуют такие средства, как Java с его JDBC, SQL транзакции ...
Если силен в C++, то пожалуйста, ODBC .. или используй direct connect.

Во всяком случае прикручиваешь regexp, начинаешь транзакцию СУБД, парсишь .. вставляешь, если все ок, делаешь COMMIT, иначе ROLLBACK .. не такая уж и сложная у тебя задача.

Советую почитать ещё про SQL*Loader для Oracle .. он отлично загружает данные в базу ...

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру