Как можно спроектировать структуру данных для социальной сети, используя Amazon DynamoDB?

75
10

спросил(а) 2020-04-09T17:02:54+03:00 1 год, 9 месяцев назад
1
Лучший ответ
73

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

Одним из объявлений Amazon в прошлом году было то, что графическая база данных с открытым исходным кодом под названием Titan может использовать DynamoDB в качестве внутреннего хранилища.

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

Для меня база данных графов всегда была основной базой данных, и, как бы я ни любил DynamoDB, я очень надеялся, что Amazon включит в себя базу данных графов в качестве управляемого сервиса рядом с DynamoDB и Aurora.

Где база данных ключей / столбцов / документов действительно увязла - это проблема «друзей друзей». "Из моей тысячи друзей, у кого есть друзья, которые говорят по-французски?"

Или «поместите эту историю в топ ленты всех, кто следует за мной», и, кстати, я Джастин Бибер - поэтому, когда я пишу, мир взрывается.

Это действительно сложные проблемы, и Facebook, LinkedIn и Twitter выделили огромные ресурсы для этой проблемы. Даже до такой степени, что таким компаниям, как твиттер, приходилось иметь решения «фактор Бибера», когда система не следовала бы той же схеме использования для этих супер твиттеров и буквально имела «Этот пользователь Твиттера следует Биберу?», А затем отображать его твит в поток, который не похож на обычный поток Twitter, где указатель на твит копируется в каждый список подписчиков с каждым твитом.

Последнее, на что следует обратить внимание, - это то, что я читал и смотрел в презентациях: Facebook, в то время как самая большая графическая база данных в мире была написана на сильно настроенном MySQL, который в основном использует базу данных в качестве массивного хранилища значений ключей. В Facebook не существует языка запросов, подобного «gremlin» (язык запросов, который используется для запросов к базе данных графов общего назначения, такой как Neo4J или Titan). Система Facebook чрезвычайно защищена, полностью настроена для жесткого выполнения точных операций Facebook с широким кэшированием. , фоновые демоны и денормализованные, чтобы обеспечить "опыт Facebook". Похоже, это дает возможность пройти через самый большой социальный граф в истории - но вы не можете сказать, что Facebook использует базу данных графов.

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

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

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

ответил(а) 2020-04-09T17:02:54+03:00 1 год, 9 месяцев назад
74

Существуют разные типы баз данных NoSQL.
1) ключ-значение
2) колонна
3) документ
4) график
Тип 1 имеет самую высокую скорость чтения / записи, но сложнее вычислять сложные запросы.
DynamoDB является типом ключ-значение базы данных NoSQL. Для социальных сетей лучше использовать графовые базы данных, такие как Neo4j, поскольку вы постоянно сталкиваетесь со множеством сложных операций.

ответил(а) 2020-04-09T17:02:54+03:00 1 год, 9 месяцев назад
43

Для кого-то, кто выглядел так, как я в 2018 году. У нас есть графическая база данных в aws под названием AWS neptune, кроме Dynamodb и Aurora, как отметил Том. «Я действительно надеялся, что Amazon включится в графическую базу данных как управляемый сервис бок о бок. с DynamoDB и Aurora ». Просто добавляю людей для дальнейшего использования

Amazon Neptune - быстрая и надежная графическая база данных, созданная для облака

ответил(а) 2020-04-09T17:02:54+03:00 1 год, 9 месяцев назад
43

Я думаю, вам стоит взглянуть на эту книгу, в которой представлены графовые базы данных, решающие проблему социальной сети: Графические базы данных, опубликованные O'Reilly Media

ответил(а) 2020-04-09T17:02:54+03:00 1 год, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема