Атомарность выполнения и хеши в Perl, Eveny, 27-Июл-04, 23:37 [смотреть все]1)Как можно реализовать атомарность сохранения данных, есть два очень больших массива данных, один надо загнать в хеш, а другой в DB, так чтобы выполнялась атомарность, т.е. либо все, либо ничего... Получается, что если массивы перегонять циклами, и вдруг по тайм ауту скрипт вырубится... 2)Может, я чего не понимаю, но при использовании не очень больших хешей (300-400 записей) в перле 5.8.0, периодически из хеша при некоторых ключах, не выдается значение... т.е. при foreach $key (sort keys %some_hash) некоторые значения не выдаются... $some_hash{$key}="", хотя при повторном прогоне они появляются... Может дело в оборудовании, т.к. на более мощной машинке таких глюков нет... |
- Атомарность выполнения и хеши в Perl, Vladislav Lazarenko, 19:24 , 28-Июл-04 (1)
>1)Как можно реализовать атомарность сохранения данных, есть два очень больших массива данных, >один надо загнать в хеш, а другой в DB, так чтобы >выполнялась атомарность, т.е. либо все, либо ничего... Получается, что если массивы >перегонять циклами, и вдруг по тайм ауту скрипт вырубится... >2)Может, я чего не понимаю, но при использовании не очень больших хешей >(300-400 записей) в перле 5.8.0, периодически из хеша при некоторых ключах, >не выдается значение... т.е. при foreach $key (sort keys %some_hash) некоторые >значения не выдаются... $some_hash{$key}="", хотя при повторном прогоне они появляются... Может >дело в оборудовании, т.к. на более мощной машинке таких глюков нет... >В первом случае - никаких специальных средств нет. Для второго случая - да, дело в памяти ! Кто же для решеиня такой задачи использует такое средство ? оно тут не к месту, IMHO
- Атомарность выполнения и хеши в Perl, Evgeny, 22:01 , 28-Июл-04 (2)
>Кто же для решеиня такой задачи использует такое средство ? оно тут >не к месту, IMHO А какие есть варианты, надо распарсить по шаблонам базу товаров фирмы (которая хранится в файлах) и загнать в DB.
- Атомарность выполнения и хеши в Perl, ihor, 09:56 , 29-Июл-04 (3)
нужно, чтобы скрипт вёл "журнал" на диске (отмечал, что уже сделано) и обновлял его после каждой успешно обработаной части. в таком случае, даже если скрипт завалится, можно будет просто продолжить с того места, где остановились. я так понтмаю, это нужно проделать один раз, т.е. время не имеет значения, в таком случае, можно решить проблему с нехваткой памяти, реализуя хеши на файловой системе, т.е. ключу соотв. имя файла, его содеожимое - значению.кроме того такой хеш (вместе с журналом) будет устойчив к падению скрипта, т.е. можно будет продолжить с того места где завалились. можно, конечно, для этого использовать SQL-сервер. т.е. за первый проход парсить данные не в память, а некот. промежуточные таблицы, а за второй, когда уверены, что все данные на месте, из этих промежуточных таблиц собрать окончательные.
- Атомарность выполнения и хеши в Perl, Vladislav Lazarenko, 12:15 , 29-Июл-04 (4)
>>Кто же для решеиня такой задачи использует такое средство ? оно тут >>не к месту, IMHO > >А какие есть варианты, надо распарсить по шаблонам базу товаров фирмы (которая >хранится в файлах) и загнать в DB. Ну, допустим, если это Oracle, то есть SQL*Loader ... Так же существуют такие средства, как Java с его JDBC, SQL транзакции ... Если силен в C++, то пожалуйста, ODBC .. или используй direct connect. Во всяком случае прикручиваешь regexp, начинаешь транзакцию СУБД, парсишь .. вставляешь, если все ок, делаешь COMMIT, иначе ROLLBACK .. не такая уж и сложная у тебя задача. Советую почитать ещё про SQL*Loader для Oracle .. он отлично загружает данные в базу ...
|