У меня есть вопрос, просто ищу предложения здесь.
Итак, мое приложение «модернизирует» настольное приложение, преобразовав его в Интернет с помощью пользовательского интерфейса ICEFaces и серверной части, написанной на Java. Однако они хранят одну и ту же базу данных Oracle, которая в настоящее время насчитывает около 700-900 таблиц и, вероятно, миллиард записей в таблицах. В некоторых отдельных таблицах 250 миллионов строк, во многих - более 25 миллионов.
Излишне говорить, что база данных плохо масштабируется. В результате производительность приложения выглядит ужасно. Все будущие архитекторы / лица, принимающие решения, либо отказались, либо не желают перестраивать постоянство. Итак, в основном мы наносим новый слой краски на функциональное настольное приложение, которое в настоящее время удовлетворяет большинство потребностей пользователей и делает это относительно легко. Реальная производительность базы данных в настольном приложении сейчас довольно низкая. Быстродействие, о котором я говорил ранее, было связано не с базами данных (извините, я ошибся там). Мне трудно спать по ночам, думая о том, как плохо будет работать это приложение, и как трудно обычным пользователям выполнять свою работу.
Итак, мой вопрос: какие у меня есть варианты для смягчения этой надвигающейся катастрофы? Есть ли какой-нибудь промежуточный слой, который я могу поместить между базой данных и кодом Java, чтобы повысить производительность и в то же время сохранить структуру базы данных нетронутой? Кэширование, очевидно, является вариантом, но я не вижу в этом панацеи. Можно ли наложить слой NoSQL DB между ними или что-то в этом роде?