Лучшая архитектура для приложения для социальных сетей

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

1 - Какая платформа лучше всего для разработки ядра этого приложения, которое будет иметь интерфейс Rest API.

2 - Какая лучшая база данных будет масштабироваться и расти вместе с моим приложением.

Насколько я понял, это были ответы, которые я нашел наиболее интересными:

Для базы данных: Cassandra NoSQL DB, потрясающая масштабируемость, потрясающая производительность записи, хорошая производительность чтения (будет улучшена в версии 0.6). Думаю, я выберу эту.

Zookeer для транзакций на Кассандре.

Я думаю, что эти 2 технологии действительно хороши для этого. Что вы думаете, ребята?

Во внешнем интерфейсе он будет обслуживать REST API, у меня нет окончательного кандидата. По этому поводу у меня есть вопросы, основанные на производительности X Масштабируемость X Быстрая разработка / обслуживание.

Java или .Net Насколько я понял, это наилучший баланс этих требований.

Python, pearl и Rail имеют лучшее (быстрая разработка / сопровождение), но хуже всех остальных.

C или C ++ я даже не рассматриваю, потому что это (Быстрая разработка / обслуживание) sux ...

Так что вы, ребята, об этом думаете?


person Sky    schedule 08.03.2010    source источник
comment
Я думаю, вы делаете слишком много преждевременной оптимизации. Наверное, на этом этапе лучше сосредоточиться на функциональности.   -  person leonm    schedule 08.03.2010
comment
Я знаю, чувак, лол, но рано или поздно такая проблема постучится в мою дверь. Я люблю работать и исследовать подобные проблемы. Прочный фундамент позволит моему проекту развиваться.   -  person Sky    schedule 08.03.2010


Ответы (6)


Взгляните на neo4j с точки зрения базы данных. Он прекрасно соответствует всем требованиям социальной сети. Фактически это сетевая база данных.

person Ricardo Marimon    schedule 08.03.2010
comment
neo4j основан на графике. Как эта статья (en.wikipedia.org/wiki/Spatial_database) говорит о своей работе для пространственной базы данных , то, что мне понадобится. Но я немного ржавый в графике, мне нужно будет вернуть мои учебники из колледжа. Спасибо за ответ - person Sky; 08.03.2010

Вам следует взглянуть на SDK 10Duke для социальных сетей http://developer.10duke.com/

Он хорошо масштабируется и не зависит от ОС и баз данных, поэтому вы можете легко настроить среду в соответствии со своими потребностями. В SDK включено множество классов для поддержки большинства объектных моделей, которые вам понадобятся для создания социального приложения. Большая часть тяжелого кода уже сделана, что сэкономит массу времени на разработку.

person Ian Grieve    schedule 05.10.2011

Также посмотрите memcached. Это высокопроизводительная распределенная система кэширования, которая определенно соответствует вашим требованиям.

person Teja Kantamneni    schedule 08.03.2010
comment
Memcached хорошо работает с ламповым решением, но я не вижу, чтобы кто-нибудь использовал его с кассандрой. Возможно, его можно использовать для повышения производительности чтения из касссандры. - person Sky; 08.03.2010
comment
Люди @Sky не используют его, потому что Cassandra 0.6 достаточно быстра, поэтому добавление memcached впереди не дает вам достаточных преимуществ, чтобы оправдать дополнительную сложность. Например, компания Digg использовала memcached со своей старой архитектурой MySQL, но отказалась от нее при переходе на Cassandra. - person jbellis; 08.03.2010

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

Что касается хранилища данных, я недостаточно знаю о проекте или проблемах, которые вы пытаетесь решить, чтобы что-то рекомендовать.

person Jeremy Weiskotten    schedule 08.03.2010
comment
Мой проект - создать веб-приложение, такое как foursquare, скажем так, foursquare с гораздо большей интерактивностью. Большинство тестов и сравнений, которые я видел по поводу производительности и масштабируемости, говорят: RoR sux on performance and its a pain to scale. Но я не нашел ни одной статьи с последовательными обходными путями для этого. - person Sky; 08.03.2010

jbellis: да, это правда.

Прямо сейчас я ищу интеграцию Django и Cassandra, я верю, что это действительно хорошая платформа, но нет официальной поддержки или даже ожидания от команды Django, поддерживающей noSql DB.

Другой вариант, который мне интересен, - это использование cassandra с RoR и клиентом Fauna, разработанным командой Twitter.

person Sky    schedule 08.03.2010
comment
twissandra.com - это пример приложения Cassandra, созданного на django. Источник связан там. - person jbellis; 09.03.2010

Возможно, вам удастся воспользоваться некоторыми функциями Socialize для нативной телефонной стороны. (SDK имеет открытый исходный код).

person Daniel Ruben Odio-Paez    schedule 23.02.2012