Какое правильное решение для высокодоступной службы авторизации?

Я работаю в магазине программного обеспечения, у которого есть собственный продукт для интеллектуального набора номера, и нам нужно реализовать решение, чтобы подчиняться спискам НЕ ЗВОНИТЬ.

По сути, у меня есть база данных с клиентами/потенциальными клиентами, которым мне нужно позвонить, и другая база данных с телефонными номерами, по которым я не могу позвонить. Поскольку система является интеллектуальным номеронабирателем, основываясь на производительности операции, среднем времени и прочем, она будет набирать больше или меньше вызовов на каждого зарегистрированного пользователя системы. Обычно это «волшебное» число составляет около 3–4 вызовов на одного зарегистрированного агента.

Репозиторий телефонных номеров для интеллектуального набора номера представляет собой базу данных PostgreSQL. Интеллектуальный номеронабиратель выбирает группу номеров из базы данных и отправляет команду на АТС для набора группы, а затем бизнес-логика переходит к передаче действительных вызовов клеркам колл-центра и т. д. (это не имеет значения, поскольку мой проблема до звонка).

Мне нужно реализовать функциональность списка «не звонить». Этот список «не звонить» будет ежедневно предоставляться нашей компании государственным органом в файле CSV. Каждый раз, когда я получаю новый CSV-файл, мне приходится очищать старый список «не звонить» и вставлять новый.

Моей первой мыслью реализовать это была пакетная обработка, перекрестная ссылка DO NOT CALL LIST с моей текущей базой данных клиентов. Но я думаю, что в зависимости от размера обеих баз данных перекрестные ссылки будут очень требовательны к производительности, и иногда их нельзя будет завершить за одну ночь. У меня были такие проблемы с пакетной обработкой раньше, и это не очень приятно видеть.

Моя вторая идея возникла, когда я подумал о том, как крупные учреждения обрабатывают высокопроизводительные и высокопроизводительные системы авторизации, такие как кредитная карта или аутентификация/авторизация пользователей. Я подумал, что создание службы аутентификации для номеров DO NOT CALL LIST и изменение алгоритма моего предиктивного дозвона для проверки каждого номера этой службой авторизации перед набором было бы опрятным.

Поскольку я здесь только болтаю, я понятия не имею, какая идея лучше, или я понял это совершенно неправильно и должен смотреть в другом направлении. Итак, мой вопрос: что бы вы порекомендовали? Сохранить CSV-файл НЕ ЗВОНИТЬ в памяти? использовать LDAP? использовать MySQL? Постгрес SQL? Занимаетесь пакетной обработкой? Или я точно лох?

Я знаю, что я не первый человек в мире с такой проблемой, поэтому, пожалуйста, просветите меня.


person Macaubas    schedule 17.04.2009    source источник


Ответы (1)


Ваша задача по поиску нескольких записей в огромном пространстве возможных записей напоминает мне DNS black/ черные списки.

rbldnsd — небольшой и быстрый демон DNS, специально созданный для обслуживания зон DNSBL. Этот демон был вдохновлен программой rbldns Дэна Дж. Бернштейна, находящейся в пакете djbdns. Еще rbldnsd от Google

Он поддерживает зоны на основе имен, поэтому вы можете преобразовать список номеров в URI в стиле ENUM — например, +1-555-4242 становится 2.4.2.4.5.5.5.1.e164.arpa. Затем он вводится в файл данных rbldnsd, компилируется в память и используется как любой другой черный список. Запись по умолчанию означает возможность вызова, или, если запись существует, ей будет присвоена запись DoNotCall.

Однако у вас все еще есть проблема с пакетным преобразованием, хотя это будет несколько более простой сценарий, который вполне можно сделать с помощью Perl или AWK. Вы также можете разделить входящие CSV-файлы на несколько файлов для параллельной обработки и окончательного слияния.

person Alister Bulman    schedule 17.04.2009