Имеет ли это смысл, зависит от:
- Является ли производительность вашего приложения недостаточно хорошей (какова ваша цель по производительности и как вы ее измеряете?)
- запрос к базе данных действительно является узким местом для вашего приложения (проблема производительности может на самом деле лежать в другом месте, о котором вы не узнаете, пока не профилируете)
- Является ли запрос memcache на самом деле быстрее, чем кэш базы данных (если есть)и на сколько (повторные запросы к одной и той же записи (записям) из вашей базы данных в любом случае, вероятно, будут поступать из ОЗУ)
- шаблон запроса вашего приложения (на самом деле вы выполняете больше работы для каждого запроса, если запись неуже в memcache, поэтому, если большинство ваших запросов уникальны, это может быть даже медленнее! - кеш базы данных также может быть достаточным)
Возможно, кто-то уже измерил некоторые из них дляGoogle App Engine, но № 4 все еще будет тем, что вам нужно выяснить для вашего приложения.Другими словами: на самом деле не вопрос, на который можно ответить без дополнительных данных.Однако, надеюсь, я дал вам несколько мест для начала расследования.
В зависимости от того, насколько хорошо вы знаете базы данных и SQL, также возможно, что вы могли бы ускорить запросы, просто лучше используя базу данных, не добавляяусложнение кэширования в вашем приложении (на самом деле не достаточно разбираетесь в GAE, чтобы знать, сколько из этого он позволяет вам делать).
Что касается предложенной вами реализации, это не выглядит необоснованным, поскольку get_by_key_name()
это уже метод класса.Вы можете попытаться внедрить свой новый метод непосредственно в существующий класс Model
(или заменить весь свой подкласс обратно в модуль), чтобы вам не пришлось изменять код, который использует Model
.Но это имеет свою опасность.Конечно, то, что у вас есть, достаточно хорошо, чтобы вы могли провести несколько тестов, чтобы увидеть, действительно ли это помогает.