Как лучше всего вернуть последние сообщения из Fauna DB для блога и т. Д.

Я создаю простую настраиваемую CMS без головы с React для сохранения данных в Fauna через API Gateway и Lambda. Чтобы перечислить мои сообщения в админке, я хотел бы получить данные из моей коллекции, отсортированные по значению даты.

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

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

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


person Aaron Austin    schedule 29.06.2020    source источник
comment
Также интересно, что вы строите. Будет ли он с открытым исходным кодом? Мне было бы интересно увидеть ваш подход :)   -  person Brecht De Rooms    schedule 29.06.2020
comment
На самом деле я даже не думал об открытии исходного кода. Это совсем не плохая идея. Я так расстроился, перепрыгивая через обручи с другими CMS, что решил бросить свою собственную. Интерфейс будет изолированным сайтом Gatsby, поэтому я только начал с Gatsby для этого проекта, хотя на самом деле создавать нечего. Когда доберусь до приличного места, я дам вам знать. Большое спасибо за помощь!   -  person Aaron Austin    schedule 30.06.2020


Ответы (1)


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

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

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

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

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

Это тот ответ, который вы искали?

person Brecht De Rooms    schedule 29.06.2020
comment
Это действительно помогает мне понять. Я думал о вещах с точки зрения своего небольшого проекта, и большие наборы данных показывают необходимость в этом. Если бы я предоставил достаточно подробностей, чтобы размышлять о моем проекте, не могли бы вы порекомендовать один из двух вариантов, которые вы предоставили в моем предыдущий вопрос, или есть еще одна передовая практика? Спасибо! - person Aaron Austin; 30.06.2020
comment
Я всегда рекомендую: - Начните с подхода Map / Get, он более гибкий, но вы понесете гораздо больше операций чтения. Однако ваша модель данных будет по-прежнему меняться вначале, и я предполагаю, что у вас не будет такого количества данных для начала, поэтому вы, вероятно, даже какое-то время все еще будете находиться на уровне бесплатного доступа. - Если вы чувствуете, что ваша модель данных достаточно стабильна и есть частые вызовы, которые вы хотите оптимизировать, создайте специальный индекс со всеми необходимыми значениями и переходите ко второму подходу только в этот момент. Перед этим, вероятно, преждевременная оптимизация. - person Brecht De Rooms; 30.06.2020
comment
В этом есть смысл. Большое спасибо за вашу помощь. - person Aaron Austin; 01.07.2020