The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Атомарность выполнения и хеши в 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 .. он отлично загружает данные в базу ...




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

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