Я не знаю ни одного другого способа, который бы сразу работал, кроме как, например, изменение исходного кода CouchDB. Одна из возможностей - использовать транк (или v1.1, когда он выпущен), который может иметь внешний API . Внешними являются веб-серверы, на которые CouchDB будет переадресовывать некоторые соединения.
Вам необходим третий слой, но не обязательно средний слой. Ваше внешнее программное обеспечение будет подключаться к CouchDB в качестве администратора и выполнять задачи, которые ожидают решения. Например, когда пользователю нужна новая база данных, он создает документ в общедоступной БД, затем внешнее программное обеспечение создает базу данных, назначает пользователя администратором и т. Д. Это просто очень . это путем запроса /_changes?feed=continuous
, потому что вы получаете в реальном времени обновления от пользователей. Я предпочитаю это, а не средний уровень, потому что программное обеспечение проще (без дополнительной веб-разработки, просто CouchDB GET и PUT), и оно может привести к сбою, перезапуску, обновлению и т. Д. Без особого влияния на пользователей.
В любом случае, работа cron не является плохой идеей. Эй, это может быть частью вашего внешнего процессора с шага 2 выше! Однако, начиная с CouchDB 1.1, репликации будут перезапускаться после перезапуска дивана.
Он не должен тратить много места. В зависимости от вашего приложения вы хотите получить все общие данные в общей базе данных и все личные данные в частной базе данных для каждого пользователя. Но даже если у вас есть дубликаты данных, я бы не назвал это отходами . Дисковое пространство стоит очень небольших затрат по сравнению с усилиями разработчика или нематериальными затратами на проблемы безопасности.
В зависимости от вашего приложения у вас есть в будущем огромные возможности для мобильных или автономных функций. Когда вы выпускаете iPhone, настольный компьютер или автономное веб-приложение, пользователи могут работать с локальной репликой своей базы данных, а затем синхронизироваться с «официальной» базой данных на вашем сервере, как только они снова подключатся. Для некоторых приложений это становится обязательной функцией, так как люди ожидают использовать приложения в любой ситуации.