Python: ОТЛИЧНЫЙ на наборе результатов GQuery (GQL, GAE)

Вы можете использовать любой ORM для извлечения данных из базы данных. Как только данные извлекаются из базы данных, вы можете установить зависимость SQL от элемента, прежде чем он будет вставлен в кэш.

NCache предоставляет собственную реализацию зависимости SQL, независимую от инфраструктуры, используемой для извлечения содержимого базы данных (EF, NHibernate, ADO.NET и т. Д.). В этой функции NCache регистрирует команды SQL (запросы SELECT и хранимые процедуры SELECT) на сервере базы данных. Если какое-либо событие UPDATE или DELETE изменяет результирующий набор, который можно получить с помощью этих зарегистрированных команд SQL, SQL-сервер отправит уведомление NCache, в ответ удалив соответствующие данные кэша.

Следовательно, внутри блока using контекста db вы можете добавить содержимое, извлеченное из базы данных, в кэш с установленной зависимостью SQL NCache.

Чтобы обеспечить 100% обновление данных кеша в ответ на события UPDATE вместо полного удаления данных кеша, затронутых этим, это включает в себя интеграцию с функцией автоматической перезагрузки, которая использует возможности NCache для сквозного чтения в форме поставщики источников поддержки. В этом случае вы можете установить флаг повторной синхронизации для элемента кэша, чтобы указать, что NCache должен извлекать свежие данные в случае, если элемент должен быть удален зависимостью SQL. Для этого провайдер для сквозного чтения продолжит извлекать свежие данные из базу данных и заменить устаревшие данные кеша. Поставщики read-thru вместе с поставщиками write-thru составляют поставщиков источников поддержки NCache, которые позволяют NCache выполнять команды чтения и записи в базу данных от имени клиентов.

Дополнительную информацию о зависимости SQL можно найти по следующей ссылке:

http://www.alachisoft.com/resources/docs/ncache/prog-guide/sql-dependency.html.

Информацию о поставщиках источников поддержки NCache можно найти по следующей ссылке:

http://www.alachisoft.com/resources/docs/ncache/prog -руководство / данных источника provider.html

7
задан Federico Elles 27 October 2008 в 07:13
поделиться

2 ответа

Набор является хорошим способом иметь дело с этим:

>>> a = ['google.com', 'livejournal.com', 'livejournal.com', 'google.com', 'stackoverflow.com']
>>> b = set(a)
>>> b
set(['livejournal.com', 'google.com', 'stackoverflow.com'])
>>> 

Одно предложение w/r/t первый ответ, то, что наборы и dicts лучше в получении уникальных результатов быстро, членство в списках является O (n) по сравнению с O (1) для других типов, поэтому если Вы хотите хранить дополнительные данные или делаете что-то, любят, создают упомянутый unique_results список, может быть лучше сделать что-то как:

unique_results = {}
>>> for item in a:
    unique_results[item] = ''


>>> unique_results
{'livejournal.com': '', 'google.com': '', 'stackoverflow.com': ''}
3
ответ дан 7 December 2019 в 03:22
поделиться

Одна опция состояла бы в том, чтобы поместить результаты в объект набора:

http://www.python.org/doc/2.6/library/sets.html#sets.Set

Получающийся набор будет состоять только из отличных значений, переданных в него.

Сбой этого, создание нового списка, содержащего только уникальные объекты, работали бы. Что-то как:

unique_results = []
for obj in user:
    if obj not in unique_results:
        unique_results.append(obj)

Это for цикл может быть сжат в понимание списка также.

1
ответ дан 7 December 2019 в 03:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: