Nano Hash - криптовалюты, майнинг, программирование

Как автоматически отправлять транзакции только для чтения подчиненному устройству

Я хотел бы, чтобы все запросы из моего приложения Spring-Hibernate, выполняемые в транзакции только для чтения, направлялись на ведомое устройство PostgreSQL, а все запросы транзакций чтения-записи — на ведущее устройство.

При использовании транзакций, управляемых аннотациями, в Spring, если транзакция определена как доступная только для чтения, драйвер PostreSQL позволяет выполнять только выборочные запросы, что очевидно, однако нет упоминания о том, как драйвер будет вести себя в конфигурации ведущий-ведомый. Например, у драйвера MySQL есть класс соединения репликации, который автоматически отправляет запросы транзакций только для чтения подчиненному устройству.

Одним из решений было бы использовать несколько фабрик сеансов Hibernate и использовать одну, указывающую на ведомое устройство, для выбора, а другую — для обновлений, но это было бы слишком много ручной обработки. Как я должен это проектировать?


  • Я немного удивлен закрытыми и отрицательными голосами по этому поводу. Пользователь мог бы провести некоторое исследование, но если вы собираетесь проголосовать за/против, было бы неплохо объяснить, почему и что они могут сделать, чтобы задать более конструктивный вопрос. 10.11.2013
  • Пользователь мог бы провести некоторое исследование, но не хотел этого делать. Мы могли бы дать некоторые пояснения, но не захотели. Кажется разумным. Но объяснение простое - пользователь должен что-то сделать перед тем, как задать вопрос, а не отдавать вопрос другим для решения. 10.11.2013
  • Приносим свои извинения за то, что не вышли за рамки установленных правил. 10.11.2013
  • Я изменил вопрос. 10.11.2013

Ответы:


1

Это удивительно сложный вопрос, и ответ на него не так прост. Вы должны иметь в виду, что вы должны отправить это таким образом, чтобы уровень, который выполняет диспетчеризацию, знал, будет ли транзакция, вероятно, доступна только для чтения или нет.

Самое чистое решение, вероятно, состоит в том, чтобы реализовать диспетчеризацию в вашем промежуточном программном обеспечении. У этого есть то преимущество, что это функциональная диспетчеризация - мы знаем, что мы пытаемся сделать, поэтому давайте отправим туда... Конечно, функции могут создать небольшой пробел в знаниях о том, что доступно только для чтения и что пишет....

Второй вариант заключается в том, что, вероятно, можно было бы выполнить диспетчеризацию с помощью чего-то вроде PGPool или подобного. Я ожидаю, что в этих случаях вы, вероятно, захотите избежать запросов, подготовленных на стороне сервера, потому что чем больше знаний вы предоставляете промежуточному уровню, тем меньше проблем у вас будет.

07.12.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..