기능
카우치베이스와 Redis + 몽고DB의 주요 기능 비교
- 포함된 내용
- 내장 캐시
- JSON 유연성
- 자동 모바일 동기화 및 피어 투 피어 동기화
- 마스터리스 아키텍처
- 전체 SQL 쿼리
- 다중 마스터 지리적 복제
- 분석
- 자동 샤딩/파티셔닝
- 데이터베이스 로직
- 내장된 전체 텍스트 검색
- 데이터 구조(대기열, 집합 등)
- 다차원 스케일링
- Couchbase
- 이벤트, UDF
- Redis + 몽고DB
- Redis 전용
- RedisJSON 모듈이 필요합니다.
- MongoDB만 해당
- Redis는 Lua 전용
고객
성공 사례: MongoDB 및 Redis를 통한 Couchbase
코드 스니펫
Couchbase의 SQL++ 및 단일 API는 Redis/MongoDB보다 뛰어납니다.
> SQL
// scope/collection allow for more flexible data organization
const bucket = cluster.bucket('accounts-receivable');
const scope = bucket.scope('tenant1');
const collection = scope.collection('invoices');
const result = await collection.get('key');
> SQL
// Redis lacks scope and collection capability
const redisClient = redis.createClient({ ... });
redisClient.connect();
const value = await redisClient.get('key');
> SQL
/* equivalent to the Mongo example */
SELECT SUM(value * volume) AS val, symbol
FROM db.stocks
WHERE symbol IN ( "AAPL", "GOOG" ) AND value > 0
GROUP BY symbol
ORDER BY val DESC, symbol ASC
> SQL
// equivalent to the SQL++ example
db.stocks.aggregate([
{ "$match": {
"$and": [
{"symbol": {
"$in": [
"AAPL",
"GOOG"]}},
{ "value": {
"$gt": 0 }}]}},
{ "$group": {
"_id": {
"symbol": "$symbol" },
"sum(value * volume)": {
"$sum": {
"$multiply": [
"$value",
"$volume"]}}}},
{ "$project": {
"_id": 0,
"sum(value * volume)": "$sum(value * volume)",
"symbol": "$_id.symbol"}}
{ "$sort": {
"sum(value * volume)": -1,
"symbol": 1 }}]})
> SQL
// Redis lacks a complex query language like SQL