Движок приложений Google:Хранилище данных не является традиционной базой данных отношений.Что под этим подразумевается?
-
12-09-2019 - |
Вопрос
Из Руководство по началу работы GAE
Поскольку хранилище данных App Engine не является традиционной реляционной базой данных, запросы не задаются с использованием SQL.Вместо этого вы можете готовить запросы, используя похожий на SQL язык запросов, который мы называем GQL.
Что они подразумевают под "не традиционной реляционной базой данных" и какие последствия это имеет, кроме требования GQL вместо SQL.
Решение
Это очень функционально ограничено по сравнению с реляционной базой данных:никаких объединений, никаких реальных проверок целостности данных (таких как уникальность и c), никаких функций ГРУППИРОВАНИЯ и агрегирования, таких как SUM и т.д. и т.п., транзакций только внутри одной группы объектов и т.д. и т.п. - МНОГО различий.
Вы должны не только делать намного больше на уровне приложения (вместо того, чтобы делать это в базе данных), но и для повышения производительности и масштабируемости вы должны соответствующим образом денормализовать свои данные (некоторые делают это и в реляционных базах данных, что противоречиво, но часто принимается с неохотой, но в GAE является обязательным).Во многих отличных эссе и видеороликах в сети подробно рассматриваются вопросы "какие последствия это имеет" - например, достаточно ли вы знаете Java, это видео поможет и т.д. и т.п.
Другие советы
Примерно 1/10 кодовой базы для того же проекта, но, возможно, более длительное время разработки, поскольку вы работаете с новым программным обеспечением для тестирования и предварительного просмотра.Вам не понадобится скрипт сборки базы данных, вы не будете смешивать кучу или несогласованных sql, php, java, xml (где 0 означает false на одном языке, а не на другом) и другие важные последствия заключались в том, что у нас не будет ИТ-боссов, утверждающих, что реляционная база данных - это решение всех и любой проблемы, разные объекты одного вида могут иметь разное количество свойств, наиболее подходящим шаблоном проектирования является "entity", который также может использоваться с СУБД,