Использование Teradata для работы OLTP с веб-приложением Java
Это Teradata предлагается для использования в работе OLTP с веб-приложением Java. Является ли hibernate хорошим выбором для использования слоя ORM с Teradata? Пожалуйста, предложите.
3 ответа
Я не уверен в предложении, но я работал в одном из приложений, где мы использовали TD для транзакционных операций, и во время нагрузочного тестирования мы обнаружили некоторые проблемы с производительностью. Мы также привлекли команду TD и узнали, что ссылочная целостность является чрезмерной нагрузкой для операций усилителя на TD. Поэтому, по моему личному мнению, если вы хотите достичь параллелизма для операций OLTP в TD, тогда идите на компромисс с производительностью.
Честно говоря, Teradata не будет моим первым выбором для приложения OLTP: его сильные стороны, IMHO, в других сценариях. Дело не в том, что такое приложение невозможно, но с самого начала ему нужно уделять максимум внимания, чтобы не попасть в ловушки, о которых уже упоминали другие пользователи (блокировка, взаимоблокировка и т. Д.).
Я также сомневаюсь, что ванильное использование Hibernate подойдет для приложения Teradata OLTP: вы можете обнаружить, что вам нужно заставить Hibernate действовать "нестандартным" способом (но я признаю, что всегда поддерживаю решения, которые дают мне полный контроль на моем SQL).
Некоторые подсказки мы использовали в приложениях, похожих на Teradata OLTP.
- стремиться к запросам с одним AMP (это может изменить подход к моделированию базы данных, отдав предпочтение небольшому количеству "сильных сущностей").
- используйте как можно больше кеша: соединение Teradata - это ценный ресурс, который лучше не использовать для информации, которая не должна быть в реальном времени
- сгруппируйте как можно больше данных: избегайте выполнения трех отдельных запросов, если у вас может быть один запрос, извлекающий всю информацию
- для пакетной вставки в Java сохраняйте столбцы первичного индекса целевой таблицы как числовые (кажется, что распределение лучше по первичному индексу с уникальным числовым индексом, а не по первичному индексу с уникальной строкой, и это влияет на блокировку)
- избегайте интерфейса "нумерации страниц" для больших наборов данных (используйте "top" для первых "n" страниц, а затем попросите пользователя лучше квалифицировать его поиск)
- пользу "макрос" над "хранимой процедурой"
- проверьте ваши требования к блокировке: вы, вероятно, в конечном итоге будете использовать множество модификаторов "LOCK ROW FOR ACCESS" (открывая возможность "грязного чтения", но в некоторых случаях это может потребоваться)
Наша команда также изо всех сил пытается доказать, что teradata как OLTP. При использовании teradata for OLTP вам нужно позаботиться о многих вещах. Мы часто сталкиваемся с проблемами блокировок, взаимоблокировок и производительности. Нам нужно больше узнать о механизме блокировки teradata и параллельном доступе. Наше приложение также чисто спящий с TD. Teradata будет поддерживать мультистатистическую концепцию, что означает, что вы можете выполнять / вставлять мультилит в один запрос. Если вы собираетесь в спящий режим, это невозможно. Hibernate имеет свое преимущество как ORM. Но когда речь идет о Teradata, нам нужно отступить и подумать.