๊ธฐ๋ฅ
์นด์ฐ์น๋ฒ ์ด์ค์ Redis + ๋ชฝ๊ณ DB์ ์ฃผ์ ๊ธฐ๋ฅ ๋น๊ต
- ํฌํจ๋ ๋ด์ฉ
- ๋ด์ฅ ์บ์
- JSON ์ ์ฐ์ฑ
- ์๋ ๋ชจ๋ฐ์ผ ๋๊ธฐํ ๋ฐ ํผ์ด ํฌ ํผ์ด ๋๊ธฐํ
- ๋ง์คํฐ๋ฆฌ์ค ์ํคํ ์ฒ
- ์ ์ฒด SQL ์ฟผ๋ฆฌ
- ๋ค์ค ๋ง์คํฐ ์ง๋ฆฌ์ ๋ณต์
- ๋ถ์
- ์๋ ์ค๋ฉ/ํํฐ์ ๋
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก์ง
- ๋ด์ฅ๋ ์ ์ฒด ํ ์คํธ ๊ฒ์
- ๋ฐ์ดํฐ ๊ตฌ์กฐ(๋๊ธฐ์ด, ์งํฉ ๋ฑ)
- ๋ค์ฐจ์ ์ค์ผ์ผ๋ง
- ์นด์ฐ์น๋ฒ ์ด์ค
- ์ด๋ฒคํธ, UDF
- Redis + ๋ชฝ๊ณ DB
- Redis ์ ์ฉ
- RedisJSON ๋ชจ๋์ด ํ์ํฉ๋๋ค.
- MongoDB๋ง ํด๋น
- Redis๋ Lua ์ ์ฉ
๊ณ ๊ฐ
์ฑ๊ณต ์ฌ๋ก: MongoDB ๋ฐ Redis๋ฅผ ํตํ Couchbase
-
"์๋ฒ๋ฅผ ์ ๋ฐ ์ดํ๋ก ์ค์์ผ๋ก์จ ์ฑ๋ฅ์ ํฅ์ํ๊ณ ํจ์ฌ ๋ ํ์ฅ ๊ฐ๋ฅํ ์ํคํ ์ฒ๋ฅผ ํ๋ณดํ ์ ์์ต๋๋ค."
์๋ฏธ๋ฅด ์ด์ฌ ์ฌ๋กฌ, ์ด์ ๋ด๋น ์์ ์ด์ฌ, Viber15 ํ๋ฃจ 10์ต ๊ฑด์ ํตํ ๋ฐ ๋ฉ์์ง ์ด๋ฒคํธ60% ์ด ์๋ฒ ์ ๊ฐ์ -
"๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ค์ฐจ์์ ํ์ฅ์ ๋๋ค. ํน์ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ํ ๋ช ๊ฐ์ ๋ ธ๋๋ฅผ ํ๋ณดํ๋ ๊ฒ์ ๋งค์ฐ ๊ฐ๋ ฅํฉ๋๋ค."
์ ์ด ๋๋ผ์ด์ฌ๋ฏธ, ์์ ๋ถ์ฌ์ฅ, USIS ์์ง๋์ด๋ง ๋ฆฌ๋, Equifax300+ 40๋ถ ์์ ๋ฐฑ๋ง ๊ฐ์ ๋ฌธ์1.5 ์์ญ์ต ๊ฐ์ ๋์์์ด ๋ณํํ๋ ๊ธฐ๋ก -
"๋ค๋ฅธ ์ด๋ค ์๋ฃจ์ ๋ Couchbase์ ๊ด๋ฒ์ํ ์ํฐํ๋ผ์ด์ฆ ๊ธฐ๋ฅ์ ๊ทผ์ ํ์ง ๋ชปํ์ต๋๋ค."
์๋น๋ ์๊ทธ๋ชฌ, ๋งฅ์นด๋น ํฌ์ค์ผ์ด, CTO2.3 ๋จ์ผ ์ฑ์ผ๋ก 230๋ง ๋ช ์ ๊ณ ๊ฐ ํ๋ณด0 ๋งค์ผ ์์ฒ ๊ฑด์ ์ฐ๊ฒฐ๋ก ์ธํ ๋ค์ดํ์
์ฝ๋ ์ค๋ํซ
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