Использование 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.

  1. стремиться к запросам с одним AMP (это может изменить подход к моделированию базы данных, отдав предпочтение небольшому количеству "сильных сущностей").
  2. используйте как можно больше кеша: соединение Teradata - это ценный ресурс, который лучше не использовать для информации, которая не должна быть в реальном времени
  3. сгруппируйте как можно больше данных: избегайте выполнения трех отдельных запросов, если у вас может быть один запрос, извлекающий всю информацию
  4. для пакетной вставки в Java сохраняйте столбцы первичного индекса целевой таблицы как числовые (кажется, что распределение лучше по первичному индексу с уникальным числовым индексом, а не по первичному индексу с уникальной строкой, и это влияет на блокировку)
  5. избегайте интерфейса "нумерации страниц" для больших наборов данных (используйте "top" для первых "n" страниц, а затем попросите пользователя лучше квалифицировать его поиск)
  6. пользу "макрос" над "хранимой процедурой"
  7. проверьте ваши требования к блокировке: вы, вероятно, в конечном итоге будете использовать множество модификаторов "LOCK ROW FOR ACCESS" (открывая возможность "грязного чтения", но в некоторых случаях это может потребоваться)

Наша команда также изо всех сил пытается доказать, что teradata как OLTP. При использовании teradata for OLTP вам нужно позаботиться о многих вещах. Мы часто сталкиваемся с проблемами блокировок, взаимоблокировок и производительности. Нам нужно больше узнать о механизме блокировки teradata и параллельном доступе. Наше приложение также чисто спящий с TD. Teradata будет поддерживать мультистатистическую концепцию, что означает, что вы можете выполнять / вставлять мультилит в один запрос. Если вы собираетесь в спящий режим, это невозможно. Hibernate имеет свое преимущество как ORM. Но когда речь идет о Teradata, нам нужно отступить и подумать.

Другие вопросы по тегам