Я пытаюсь сделать запрос в моей базе данных, чтобы составить список постов рядом с местоположением, которое данному пользователю понравилось / не понравилось.
allPostsNearLocationUserHasLiked(
userId: ID,
location: LocationInput,
radius: Int
): [Post]
allPostsNearLocationUserHasNotLiked(
userId: ID,
location: LocationInput,
radius: Int
): [Post]
Для этого я в настоящее время использую AWSAppSync с потоковой передачей данных DynamoDB в Elastic Search.Это позволяет мне легко выполнять геопространственный поиск и получать все сообщения рядом с заданным местоположением.
Мне интересно, какой самый эффективный способ - вычислить это с помощью DynamoDB?Или было бы лучше для меня переключиться на базу данных SQL для моих лайков / пользователей?
У меня есть таблица DynamoDB Users, posts и Likes.Я думал об использовании преобразователя конвейера для:
1) Получить список всех сообщений рядом с местоположением пользователя (Elastic Search)
2) Запросить таблицу лайков, чтобы получить вселайки, которые я сделал (DynamoDB)
3) Объединить результаты по элементам.
У меня есть серьезные сомнения относительно эффективности этого особенно шага 3, который является операцией O (M * N),
Есть ли способ выполнить весь этот запрос в Elastic Search?
## DynamoDB Table?? Or maybe SQL?
type Like {
likeId: ID!
userId: ID!
likedPostId: ID!
}
type Query {
#Implement with Elastic Search
allPostsNearLocation(location: LocationInput, radius: Int): [Post]
## Elastic search???
allPostsNearLocationUserHasLiked(
userId: ID,
location: LocationInput,
radius: Int
): [Post]
allPostsNearLocationUserHasNotLiked(
userId: ID,
location: LocationInput,
radius: Int
): [Post]
}
type Location {
lat: Float!
lon: Float!
}
input LocationInput {
way: Float!
lon: Float!
}
type Mutation {
putPost(
author: String!,
title: String!,
content: String!,
location: LocationInput!,
url: String!
): Post
putUser(name:String): User
likePost(userId: ID!, postId: ID!): Like
}
#DynamoDB Table
type User{
userId: ID!
name: String
likes: [Like]
}
#DynamoDB table
type Post {
id: ID!
author: String!
title: String!
content: String!
url: String!
location: Location!
}
schema {
query: Query
mutation: Mutation
}