CouchBase, смешанный с Memcached, утратил большую часть философии и функциональности CouchDB?
На данный момент, единственный способ, которым я работал с более новыми версиямиCouchBase, черезКлиент memcached, я используюErlang как язык программирования, и поэтому я схватил себяErlang Memcached Клиент, Я заметил, что этот клиент сериализует и десериализует термины эрланга (и ключ, и значение), преобразовывая их из двоичного кода в двоичный и обратноerlang:term_to_binary/1 and erlang:binary_to_term/1
при отправке и получении данных отMemcached.
При настройке CouchBase нас просят выбрать либо корзины memcached, либо корзины CouchBase (vbuckets). Теперь я выбрал CouchBase (потому что мне нужно было постоянство). Я начал взаимодействовать с установкой, используя клиент erlang memcached, и это нормально, я сохраняю термины erlang и возвращаю термины erlang из базы данных. Однако проблемы начинаются здесь:
1. Из-за сериализации данных объекты принимаются как вложения. Даже если они отправляются как JSON из Erlang, они отправляются как двоичные данные, которые не имеют никакого значения для CouchBase (или Memcached?)
{ "_id": "mykey", "_rev": "1-000010fb1a2b02ef0000000d59960000", "$flags": 38489, "$expiration": 0, "$att_reason": "invalid_json", "_attachments": { "value": { "content_type": "application/content-stream", "revpos": 2, "digest": "md5-n3mJhf2kKVQtkIunIbCJZQ==", "length": 13, "stub": true } } }
2. В результате этого, эти данные не могут быть найдены, манипулировать черезCouchDB просмотров, Единственный способ получить данные - это «Ключ», однако вложенный объект может быть. С оригинальной Couch DB мы могли бы написатьРасширенные виды, Карта уменьшить искать и манипулировать данными JSON в базе данных e.t.c
3. Следовательно, мы не можем четко использовать такие вещи, как:Couch Apps а такжеПроектная документация с Couch Base, как мы привыкли делать с Couch DB, потому что эти функции предназначены для обработки данных JSON в Couch.
Вопросов
1. Я понимаю, что CouchBase смотрит на подход, отличный от CouchDB, однако, как разработчик, я чувствую, что многое у нас отняли. Нет больше Couch Apps, Design Docs, Views, e.t.c?
2. Возможно, я что-то здесь не так, может кто-нибудь показать мне, как я все еще могу делать все это с Couch Base, как я делал с оригинальной Couch DB?
3. Есть ли другой способ вставки, чтения или обновления данных в Couch Base 1.8 и выше (с использованием erlang), кроме Erl, ang memcached клиент? Это связано с тем, что существует сериализация данных, которая делает эти данные бесполезными для других технологий в рамках того же проекта, поскольку они могут быть не в состоянии декодировать структуры данных Erlang.
4. В мультиязычном проекте, где у нас есть PHP Developers, C ++, Erlang, Ruby e.t.c. работая с одним и тем же экземпляром Couch Base (база данных), с сериализацией данных, как мы должны получать доступ и понимать данные во всех технологиях?
Кто-то помогает указать на изменения с CouchDB на Couch Base, объясните, почему новая Couch Base так привязана к Memcached, что мы вынуждены использовать клиенты memcached для общения с CouchBase. Кроме того, если есть еще один Erlang-to-CouchBase SDK, который может помочь мне передавать JSON (а НЕ сериализованные данные) с и на Couch Base, я хочу взять его на руки.
** РЕДАКТИРОВАТЬ **
Предположим следующее: CouchBase x86_64 1.8.0 и Erlang OTP R15B. Мне нужно работать с данными JSON в Couch Base, чтобы в большом многоязычном проекте наши приложения работали с одним и тем же набором данных без проблем с сериализацией. Спасибо