2013-05-23 4 views
1

Я разрабатываю веб-приложение в Laravel 4, у которого есть несколько пользователей, каждый из которых имеет профиль. Эти профили могут (или не могут) иметь разные переменные, такие как даты и т. Д. Я рассмотрел некоторые решения для РСУБД для этой проблемы, включая дизайн EAV, но этот метод действительно дорог с точки зрения производительности и кода, поэтому я отказался Это.Профили пользователей в трехуровневом приложении CouchDB и Laravel

Другой вариант - создать огромную таблицу со многими столбцами, но я также отбросил ее, так как бесполезно иметь пользователя с 30 полями нуля.

Так что я думал об использовании NoSQL, и я закончил с CouchDB для масштабируемости и репликации master-master. Я заглянул в какой-то DBaaS и нашел Cloudant довольно интересным. Реальный вопрос: действительно ли это вариант для моего случая (с пользователями с профилем с разными переменными для каждого пользователя)? Или это возможно с помощью СУБД (MySQL)? Кроме того, как я могу использовать CouchDB с Laravel в трехуровневом приложении? Я не хочу, чтобы у пользователя был доступ к ни одной из функций базы данных, я действительно думаю, что использование CouchDB на стороне сервера является лучшим вариантом до сих пор, пожалуйста, исправьте меня, если я ошибаюсь.

ответ

2

Наличие неоднородных данных, подобных вам, является типичным случаем, когда документы-ориентированные базы данных, такие как CouchDB или MongoDB, лучше, чем реляционные базы данных.

В то время как CouchDB может быть сконфигурирован так, чтобы быть доступным для общественности и быть непосредственно доступным клиентам (есть даже доказательство концепций целых веб-приложений, обслуживаемых исключительно CouchDB), на практике это довольно редко. Обычным сценарием является использование CouchDB в качестве скрытой серверной службы, которая используется веб-сервером, который запускает какие-то серверные веб-технологии, такие как PHP, JSP, ASP или все, что вы предпочитаете.

+0

Спасибо! можете ли вы предоставить мне некоторую информацию об использовании его в 2-уровневом? Я нашел Doctrine ODM, но я не совсем уверен в его преимуществах. –

+0

@DilipRamirez Это новый вопрос. – Philipp