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