Как я могу выбрать случайный экземпляр из FaunaDB?

FaunaDB позволяет мне индексировать элементы данных по отдельным полям и разбивать на страницы по индексам, но я не вижу способа выбрать случайный элемент.

1 ответ

Выбор случайного элемента в масштабе трудно в любой базе данных. Есть два основных метода на выбор в зависимости от ваших требований.

  1. Определите и используйте индекс для вашего запроса. Это дает вам полный контроль над поведением, таким как выбор одного и того же элемента дважды и т. Д.

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

Какой бы вариант вы ни выбрали, вы в конечном итоге захотите получить документацию по индексу FaunaDB. Для варианта 2 этот учебник ленты действий содержит множество примеров запросов к индексным событиям.

Случайный указатель

Поддерживайте поле в каждом экземпляре, который содержит случайное число, и используйте его в качестве значения индекса. Затем разбейте значения над значениями на случайный ключ запуска. Этот метод позволяет случайному процессу выбирать один и тот же элемент несколько раз.

Его можно расширить для большего контроля, добавив целочисленное поле для подсчета количества раз, когда экземпляр был выбран. Вы можете увеличить счет в той же транзакции, которая выбирает экземпляр. Используя счетчик выбора в качестве индекса, вы можете запросить случайный элемент, который был выбран ноль раз. После того как вы выбрали все свои элементы один раз, вы можете повторить с 1 срок, чтобы начать выбирать элементы, которые были выбраны один раз, но не дважды.

Существующий индекс

Данные в FaunaDB являются временными, поэтому вы можете использовать временные функции для выбора экземпляров таким образом, который может быть достаточно случайным, в зависимости от вашего варианта использования.

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

Используя бессрочный индекс класса, вы будете выбирать экземпляры из всего класса, но он также может работать для выбора экземпляров в пределах одного термина индекса с терминами.

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

Другие вопросы по тегам