Я ищу лучший способ создать таблицу DynamoDB (поддерживаемую другой базой данных MySQL), чтобы создать систему дружбы в моем веб-приложении.
У меня есть эти требования: это должно быть легко и экономически выгодно для всех пользователей-друзей (нумерация страниц должна быть идеальной), и у пользователя могут быть «неограниченные» друзья.
Я уже использую DynamoDB для отслеживания n-арного дерева между всеми моими пользователями, поэтому я подумал, что первым способом было расширить мою предыдущую работу.
{
"children": [
1,
1
],
"id": 0,
"parentId": -1
}
Просто добавьте новый список в мой элемент:
{
"children": [
1,
1
],
"friends": [{"friend":"100","pending":"false","since":"2015-12-21T17:42:34Z","request":"2015-12-21T17:42:34Z"}],
"id": 0,
"parentId": -1
}
Таким образом, получить список всех друзей очень просто и экономически эффективно, но DynamoDB ограничен 400 КБ на элемент, поэтому элемент друга составляет более или менее 70 байт, поэтому у пользователя может быть только 5 КБ друзей.
Так что я подумала об этом другом методе. Создать таблицу только для дружеских отношений:
| User | Friend | Pending | Since | Request |
--------------------------------------------------------------------------
| 1 | 2 | false | 2015-12-21T17:42:34Z | 2015-12-21T17:42:34Z |
| 2 | 1 | false | 2015-12-21T17:42:34Z | 2015-12-21T17:42:34Z |
Так что здесь у Пользователя могут быть «неограниченные» друзья, но когда мне нужен список друзей, я должен прочитать всю таблицу, так что я думаю, что это не очень экономически эффективно, я могу сделать это даже с MySQL.
С обоими методами все еще есть проблема, я должен дублировать информацию о дружбе. Поэтому я думаю, что ни DynamoDB, ни традиционный SQL не могли бы помочь мне построить быструю базу данных. Поэтому могу я спросить, есть ли другая технология, которую я мог бы использовать.