Смешение CouchBase с Memcached, потеря большинства принципов и функциональности CouchDB?

На данный момент единственным способом работы с более новыми версиями CouchBase является клиент memcached . Я использую Erlang в качестве языка программирования, поэтому я взял себе Erlang Memcached Client . Я заметил, что этот клиент сериализует и десериализует термины erlang (как ключ, так и значение), преобразовывая их из и в двоичные файлы, используя erlang:term_to_binary/1 и erlang:binary_to_term/1 при отправке и получении данных из memcached .

При настройке CouchBase нас просят выбрать либо сегменты memcached, либо сегменты CouchBase (vbuckets). Теперь я выбрал CouchBase (потому что мне нужно было упорство). Я начал взаимодействовать с настройкой с помощью клиента memcached erlang, и все в порядке, я сохраняю термины 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 мы могли написать Advanced Views, Map Reduce для поиска и обработки данных JSON в базе данных и т. д.

3. Следовательно, мы не можем явно использовать такие вещи, как: Couch Apps и Design Documents с Couch Base, как мы привыкли делать с Couch DB, потому что эти функции предназначены для обработки данных JSON в Couch.

Вопросы
1. Я понимаю, что CouchBase рассматривает подход, отличный от CouchDB, однако, как разработчик, я чувствую, что у нас многое отняли. Больше никаких Couch Apps, Design Docs, Views и т. д.?
2. Возможно, у меня что-то не так, может кто-нибудь показать мне, как я могу сделать все это с Couch Base, как я сделал с оригинальной Couch DB?
3. Есть ли другой способ вставки, чтения или обновления данных в Couch Base 1.8 и выше (используя erlang), кроме клиента memcached Erlang? Это связано с тем, что существует сериализация данных, которая делает эти данные бесполезными для других технологий в рамках того же проекта, поскольку они могут быть не в состоянии декодировать структуры данных Erlang
4. В многоязычном проекте, где у нас есть разработчики PHP, C++, Erlang, Ruby и т.д. работая с одним и тем же экземпляром Couch Base (базой данных) с сериализацией данных, как мы должны получать доступ и понимать данные по всем технологиям?

Кто-нибудь, помогите указать на изменения CouchDB в Couch Base, объяснить, почему новая Couch Base настолько привязана к Memcached, что нам приходится использовать клиентов memcached для связи с CouchBase.Кроме того, если есть еще один SDK Erlang-to-CouchBase, который может помочь мне передавать JSON (а НЕ сериализованные данные) из и в Couch Base, я хотел бы взять его в свои руки.

** РЕДАКТИРОВАТЬ **
Предположим следующее: CouchBase x86_64 1.8.0 и Erlang OTP R15B. Мне нужно работать с данными JSON в Couch Base, чтобы в большом многоязычном проекте наши приложения работали с одним и тем же набором данных без проблем с сериализацией. Спасибо

7
задан Muzaaya Joshua 27 February 2012 в 12:48
поделиться