Как правильно запустить сопрограммы Kotlin для реализации Caffeine AsyncLoadingCache?

Это слишком долго для комментария.

Если это было «абсолютно неправильно», большинство баз данных не поддержали бы его. Хорошо, большинство баз данных поддерживают запятые в предложении FROM, и я считаю, что это «абсолютно неправильно». Но поддержка JSON - это новая разработка, а не обратная совместимость «функции».

. Один очевидный случай: структура JSON - это просто BLOB, который передается обратно в приложение. Тогда нет дебатов, кроме того, накладные расходы на хранение JSON, что излишне многословно для структурированных данных с общими полями в каждой записи.

Другим случаем является случай «редких» столбцов. У вас есть строки со многими возможными столбцами, но они варьируются от строки к строке.

Другой случай - это когда вы хотите хранить «вложенные» записи в записи. JSON является мощным.

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

1
задан Sam 20 March 2019 в 21:52
поделиться

1 ответ

Кэш владеет экземплярами Executor и CompletableFuture, поэтому он уже таким образом контролирует жизненный цикл задач загрузки.

Это не так, в документации по Caffeine указано, что он использует предоставленные пользователем Executor или ForkJoinPool.commonPool(), если ничего не указано. Это означает, что жизненный цикл по умолчанию отсутствует.

Несмотря на то, что прямой вызов GlobalScope кажется неправильным решением, потому что нет причин жестко кодировать выбор. Просто предоставьте CoroutineScope через конструктор и используйте GlobalScope в качестве аргумента, пока у вас нет явного жизненного цикла для привязки кеша.

0
ответ дан Kiskae 20 March 2019 в 21:52
поделиться
Другие вопросы по тегам:

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