2010-03-08 3 views
3

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

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

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

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

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

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

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

На переднем конце он будет обслуживать API REST, у меня нет окончательного кандидата. Для этого у меня есть вопросы, основанные на Performance X Scalability X Fast Development/Maintenance.

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

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

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

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

+0

Я думаю, что вы делаете слишком много преждевременной оптимизации. Вероятно, лучше сосредоточиться на функциональности на этом этапе. – leonm

+0

Я знаю человека, LOL, но скоро или поздно эта проблема будет стучать в мою дверь. Я люблю работать и исследовать эту проблему. Твердые фундаменты позволят моему проекту расти здоровым. – Sky

ответ

2

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

+0

neo4j основан на графике. Как и в этой статье (http://en.wikipedia.org/wiki/Spatial_database), скажем, что ее работа для пространственной базы данных, что мне понадобится. Но я немного ржавый на графике, мне нужно будет вернуть мои книги в колледже. Спасибо за answser – Sky

0

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

+0

Memcached приятно использовать с ламповым решением, но я не вижу, чтобы кто-нибудь использовал его с помощью cassandra. Возможно, это может быть использовано для улучшения производительности чтения из casssandra. – Sky

+0

@Sky люди не используют его b/c Cassandra 0.6 достаточно быстр, что добавление memcached впереди не дает вам достаточно преимуществ, чтобы оправдать дополнительную сложность. Например, Digg использовал для использования memcached с их старой архитектурой MySQL, но они отбросили его при переходе в Cassandra. – jbellis

0

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

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

+0

Мой проект заключается в создании веб-приложения, такого как foursquare, позволяет сказать, что это четырехугольник с гораздо большей интерактивностью. Большинство тестов и сравнения, которые я вижу о производительности и масштабируемости, говорят: RoR sux on performance и его боль в масштабе. Но я не нахожу статей с соответствующими обходными решениями для этого. – Sky

0

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

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

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

+0

http://twissandra.com/ является примером приложения Cassandra, выполненного в django. Источник связан с этим. – jbellis

+0

Я уже вижу это, его приятное спасибо! – Sky

1

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

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

0

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