Было бы неплохо использовать Terracotta в качестве решения для сохранения (замены базы данных)? Я специально интересуюсь проблемами целостности данных и поддержкой транзакционных систем.Об использовании Terracotta в качестве решения о постоянстве
ответ
Терракота является transactional (синхронизированные блоки образуют транзакции модифицированных объектов), но не является и не хочет быть совместимым с JTA. Существует довольно продолжительное обсуждение транзакций и некоторых распространенных заблуждений о Terracotta here.
Я написал blog post about data lifetimes и как это должно задуматься над тем, чтобы определить возможности использования Терракотты. Короче говоря, сладкое пятно Terracotta - это прецедент, где вам нужно постоянство и доступность (ваше приложение может потерпеть крах, но вам все еще нужны данные), но где данные не обязательно критически важны в долгосрочной перспективе.
Каноническим примером являются данные, важные в контексте пользовательского сеанса в веб-приложении, такие как информация о корзине покупок. Вы хотите сохранить эти данные постоянными, чтобы при сбое вашего веб-приложения вы поддерживали корзину покупок. Но сама тележка может или не может быть куплена. Таким образом, вы храните его в Terracotta до его покупки, а затем сохраняете в базе данных как данные «системы записи».
Исторически данные, хранящиеся в базе данных, всегда были «системой записи», которая была критически важна для долгосрочного успеха вашего бизнеса: клиентов, заказов и т. Д. С сегодняшними «безгосударственными» архитектурами (которые действительно 't без гражданства), мы переносим все среднесрочные данные в базу данных. Это означает, что мы бесполезно наказываем нашу базу данных (с дополнительной работой и хранением) и нашими разработчиками (которые должны обрабатывать несоответствие объектно-реляционного импеданса даже при использовании ORM). Лучший подход - оставить его в объектах и сгруппировать его с помощью Terracotta. Ряд недавних пользователей Terracotta использовали эту технику для значительного сокращения их базы данных (сэкономить миллионы долларов), одновременно увеличивая их способность масштабироваться.
Существует вопрос о точке интеграции с базой данных и о том, как надежно выполнить передачу. Мы видели это в качестве примера использования недавно выпущенного Examinator (веб-приложение для справки Spring/Terracotta/Tomcat/MySql). Когда экзамены ведутся, государство (ответы на вопросы, рандомизированные заказы на выбор, вопросы, отмеченные для обзора) хранится в Terracotta. Но когда экзамены завершены, итоговый балл рассчитывается и сохраняется в базе данных долгосрочно.
Чтобы сделать это безопасно, мы используем стратегию ключа Hibernate, которая сначала генерирует идентификатор строки базы данных в объекте в Terracotta, а затем сохраняет данные в db, а затем удаляет из Terracotta. Этот сценарий имеет потенциальное состояние гонки, если приложение падает после сохранения в базу данных, но перед удалением из Terracotta. В этом случае приложение может попытаться повторно сохранить данные в db, возможно, создав две строки. Но из-за предварительно сгенерированного идентификатора мы можем определить, была ли ранее написана строка или нет, и избежать этой проблемы.
Таким образом, я не думаю, что Terracotta заменит ваш db в ближайшее время. Это слишком новая операционная система, чтобы даже считаться таковой в большинстве магазинов. Модель использования отличается. В кучу нет запросов или возможностей SQL (ваши возможности запросов определяются вашей объектной моделью). Я думаю, что он может и начинает заменять среднесрочное использование данных, когда это намного дешевле и проще. Однако некоторые люди начинают экспериментировать с ним для длительного хранения.
Терракота - это только Java. Если это нормально для вас, чтобы вы были заблокированы в этой технологии, без возможности просто написать некоторые скрипты (без JVM) на других языках, а затем пойти с ним.
Статья Kill Your Database with Terracotta была действительно приятной.
- 1. MVC: Контролер знает о постоянстве?
- 2. Mosquitto не обновляет сообщения о постоянстве (mosquitto.db)
- 3. Стратегическое решение для Android о постоянстве данных
- 4. База данных о постоянстве работы Windows Workflow?
- 5. Встраивание Terracotta
- 6. Querying Terracotta
- 7. Концептуальный вопрос начинающего пользователя о ООП и постоянстве
- 8. Grails & Terracotta BigMemory
- 9. Решения о разработке функций
- 10. Решения о разработке
- 11. Terracotta + Compass = Hibernate + HSQLDB + JMS?
- 12. Ищете решения о htaccess
- 13. Вопрос об использовании XML в качестве протокола уровня приложения
- 14. Вопрос об использовании функции класса-члена в качестве параметра шаблона
- 15. boost :: сообщение об ошибке phoenix при использовании в качестве функтора
- 16. App Server Clustering vs Terracotta
- 17. Внедрение решения об изменении стоимости
- 18. Решения об обнаженных тройках в Судоку
- 19. Прочная конфигурация очереди в Terracotta
- 20. Terracotta - Невозможно передать в com.tc.object.bytecode.TransparentAccess
- 21. Terracotta Performance and Tips
- 22. Terracotta and siro
- 23. об использовании `` || в Эрл
- 24. Windows Workflow: Почему они застряли в постоянстве?
- 25. Как отменить выполняемый запрос в постоянстве Java?
- 26. Обновление сущностей в расширенном постоянстве Контекст
- 27. Об использовании событий
- 28. Принятие решения о преобразовании из программы Integer в Double при использовании данных из таблицы пригодности в качестве переменной
- 29. Уведомление об использовании kinvey
- 30. Участок принятия решения о партии