Наше приложение работает в Интернете, в основном это инструмент запроса, выполняет некоторые транзакции. Мы размещаем базу данных Oracle. В приложении всегда был отдельный экземпляр Oracle для каждого клиента. Клиент – это компания, которая платит нам за предоставление услуг сотрудникам компании, обычно 10 000–25 000 сотрудников на одного клиента. Мы планируем иметь несколько сотен клиентов. Мы выпускаем основной выпуск каждые несколько лет, и переход на этот новый выпуск является сложной задачей: у нас может быть команда на площадке клиента на пару недель, объясняющая новые функции и настраивающая данные о вождении в соответствии с потребностями этого клиента.
Мы рассматриваем возможность использования нескольких клиентов, помещая всех наших клиентов в один общий экземпляр Oracle 11g на большом надежном сервере Windows Server 2008, чтобы сократить расходы. Мне интересно, целесообразно ли это.
Есть некоторые преимущества в наличии отдельных экземпляров для каждого клиента. Скажите мне, если это подделка, пожалуйста. В моем грубом предположении об уменьшении важности:
Наши клиенты MyCorp и YourCo могут быть перенесены отдельно, когда в схему вносятся критические изменения. (С мультиклиентом мы перенесем более 300 клиентов за одну ночь!?!)
Данные MyCorp могут быть легко скопированы и (!!!) восстановлены, не затрагивая других клиентов.
Данные MyCorp надежно отделены от данных их конкурента YourCo, не полагаясь на то, что разработчики получат правильный код и/или администраторы баз данных получат правильную конфигурацию.
Множественные экземпляры представляют меньший риск, потому что авария с одним клиентом (кто-то случайно удваивает всем зарплату, и ошибка обнаруживается после дня выплаты зарплаты) не влияет на других клиентов. Катастрофа, затронувшая ВСЕХ наших клиентов (упс, новый администратор базы данных, и вдруг у всех участников одинаковый SSN!?!), может поставить под угрозу нашу компанию.
Наличие одного экземпляра на одном сервере представляет собой единую точку отказа, при которой вся наша клиентская база выходит из бизнеса, если ураган разрушит здание. Наличие нескольких экземпляров на нескольких серверах допускает географическую разбросанность: никакая катастрофа не затронет слишком большую часть наших клиентов, а незатронутые серверы в других регионах могут взять на себя нагрузку отказавших серверов.
Производительность выше, потому что база данных меньше (10 000 против 2 000 000 строк в примерно 50 таблицах).
Если офисы MyCorp (в основном) находятся только в одном регионе, то экземпляр MyCorp может быть географически совмещен с ним, поэтому задержка в сети не повлияет на производительность. По той же причине мы можем предоставлять более качественные услуги глобальным клиентам.
В MyCorp хотят использовать свою базу данных внутри компании, тогда мы можем легко экспортировать их экземпляр, чтобы получить MyCorp свои данные.
Балансировка нагрузки упрощается, потому что экземпляры можно размещать на разных серверах (это с веб-фермой).
Когда требуется экземпляр DEV или QA, проще клонировать реальный экземпляр и анонимизировать данные, потому что данных гораздо меньше.
Поскольку они достаточно малы, разработчики могут иметь свои собственные экземпляры, работающие локально, чтобы они могли работать над кодом во время ожидания в аэропорту и во время полета, не сталкиваясь с проблемами VPN.
В1. Каковы другие преимущества отдельных экземпляров?
Мы подумываем об изменении схемы базы данных и объединении всех наших клиентов в один экземпляр Oracle, работающий на одном мощном сервере.
Вот преимущества подхода с несколькими клиентами, самые важные в первую очередь (мой WAG). Пожалуйста, уточните, если это подделка:
Меньше работы для администраторов баз данных, поскольку им нужно поддерживать только один экземпляр вместо сотен. Меньше работы администратора базы данных приводит к удешевлению, что является нашим основным мотивом для этого изменения.
Имея всего один экземпляр, администраторы баз данных могут лучше оптимизировать производительность. У них будет время добавить соответствующие индексы и проверить наш SQL.
Разработчикам будет проще отлаживать и улучшать приложение, потому что есть только одна схема и одно приложение (могут быть десятки версий схемы, если есть сотни экземпляров, с разными версиями приложения для каждой версии схемы). ). Это тоже снижает затраты. Альтернативой является необходимость начинать каждый сеанс отладки с (1) какой версии работает этот клиент и (2) давайте попытаемся воссоздать соответствующую среду разработки, код и базу данных. (Нам нужна виртуальная машина, которая включает в себя код И экземпляр базы данных для каждого исправления и выпуска!)
Лицензирование Oracle дешевле, потому что оно оценивается за сервер независимо от веса (или что-то в этом роде — я ничего не знаю об этом предмете).
База данных становится жизнеспособным постоянным хранилищем данных веб-сеанса, потому что существует только один экземпляр.
Некоторые операции с базой данных упрощаются с одним многоклиентским экземпляром, например, поиск участника, когда он не знает, на какого клиента он (или, может быть, его супруга) работает: все имена находятся в одной таблице. Отчетность по клиентам проста.
Вопрос 2. Каковы другие преимущества использования нескольких клиентов в одном экземпляре?
Вопрос 3. Какой подход, по вашему мнению, лучше (почему)? Экземпляр для каждого клиента или все клиенты в одном экземпляре?
Я обеспокоен тем, что наличие одного экземпляра с несколькими клиентами делает миграцию почти невозможной, и это убийца сделки...
... если нет компромиссного решения, такого как наличие двух многоклиентских экземпляров, старого и нового. В этом случае мы разработаем межэкземплярные решения для поиска участников, составления отчетов и т. д., чтобы клиенты могли переходить от одного мультиклиентского экземпляра к другому без каких-либо поломок.