Наше приложение работает в Интернете, в основном это инструмент запросов, выполняет некоторые транзакции. Мы размещаем базу данных 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.
Q1: Каковы другие преимущества отдельных экземпляров?
Мы планируем изменить схему базы данных и объединить всех наших клиентов в один экземпляр Oracle, работающий на одном здоровенном сервере.
Вот преимущества подхода, основанного на нескольких клиентах, в первую очередь (мой WAG). Пожалуйста, отрежьте, если это фальшивка:
Меньше работы для администраторов баз данных, поскольку им нужно поддерживать только один экземпляр вместо сотен. Меньше работы DBA переводит на более дешевый, наш главный мотив для этого изменения.
Имея всего один экземпляр, администраторы баз данных могут лучше оптимизировать производительность. У них будет время, чтобы добавить соответствующие индексы и просмотреть наш SQL.
Разработчикам будет легче отлаживать и улучшать приложение, потому что существует только одна схема и одно приложение (могут быть десятки версий схемы, если есть сотни экземпляров, с другой версией приложения). для каждой версии схемы). Это также снижает затраты. Альтернативой является запуск каждого сеанса отладки с (1) какой версией работает этот клиент и (2) давайте изо всех сил попытаемся воссоздать соответствующую среду разработки, код и базу данных. (Нам нужна виртуальная машина, которая включает код и экземпляр базы данных для каждого исправления и выпуска!)
Лицензирование Oracle обходится дешевле, потому что он платится за сервер независимо от кражи (или чего-то еще - я ничего не знаю по этому вопросу).
База данных становится жизнеспособным постоянным хранилищем данных веб-сеанса, поскольку существует только один экземпляр.
Некоторые операции с базами данных проще с одним мультиклиентным экземпляром, например, поиск участника, когда он не знает, на какого клиента он (или, может быть, его супруга) работает: все имена находятся в одной таблице. Отчетность по клиентам проста.
Q2: Каковы другие преимущества наличия нескольких клиентов в одном экземпляре?
Q3: Какой подход, по вашему мнению, лучше (почему)? Экземпляр на одного клиента или всех клиентов в одном экземпляре?
Я обеспокоен тем, что наличие одного мультиклиентного экземпляра делает миграцию практически невозможной, и это просто убийство ...
... если не существует компромиссного решения, такого как наличие двух мультиклиентских экземпляров, старого и нового. В этом случае мы разработали бы решения для нескольких экземпляров для поиска участников, создания отчетов и т. Д., Чтобы клиенты могли переходить от одного экземпляра с несколькими клиентами к другому без каких-либо проблем.