์ ์นด์ฐ์น๋ฒ ์ด์ค์ธ๊ฐ์?
Couchbase๋ ์์ ๊ฒฝ๋ ฅ์ ๋น๋๋ ๋ถ์ฐํ NoSQL ๊ฐ๋ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ซํผ์ผ๋ก, ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ํ ๋ค์ฉ๋์ฑ, ์ฑ๋ฅ, ํ์ฅ์ฑ ๋ฐ ์ฌ์ ์ ๊ฐ์น๋ฅผ ์ ๊ณตํฉ๋๋ค. Couchbase๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์ฝ๋ฉ ์ง์๊ณผ ํจ๊ป RAG ๊ธฐ๋ฐ ์์ด์ ํธ, ์ค์๊ฐ ๋ถ์, ํด๋ผ์ฐ๋-์ฃ์ง ๋ฒกํฐ ๊ฒ์์ ํฌํจํ ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ถ์ ์ํ AI ์๋น์ค๋ฅผ ํตํด AI๋ฅผ ์์ฉํฉ๋๋ค.
๋์ ์ฑ๋ฅ์ผ๋ก TCO ์ ๊ฐ
Couchbase๋ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํด ์ ๋ ดํ ๋น์ฉ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฐ์ ์ ์ธ์์ ์ธ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๊ฒ ์ํฌ๋ก๋์ ์ฑ๋ฅ์ ์กฐ์ ํ์ฌ ์ด์ ๋น์ฉ์ ํ๊ธฐ์ ์ผ๋ก ๋ฎ์ถ ์ ์์ต๋๋ค.
TCO์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
const bucket = cluster.bucket('travel.sample');
const collection = bucket.defaultCollection();
await collection.upsert('user_1024', {
'name' : 'Don Chamberlin',
'tags' : ['SQL', 'SQL++']
})
const result = await collection.get('user_1024');
console.log(result);
๊ฐ๋ฐ์ ์นํ์ ์ธ ๋ฐ์ดํฐ ํ๋ซํผ
Couchbase Capellaโข DBaaS๋ JSON ๋ฌธ์์ ์คํค๋ง ์ ์ฐ์ฑ๊ณผ AI ์ง์ ์ฝ๋ฉ์ ์ฉ์ด์ฑ์ ๊ฒฐํฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ ํธํ๋ ์ธ์ด๋ก ๋ถ์ฐ, ํธ๋์ญ์ , ๋ถ์, ๋ชจ๋ฐ์ผ ๋ฐ AI ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
Capella iQ์ ๋ํด ์์ธํ ์์๋ณด๊ธฐ
SELECT
a.name,
COUNT(r.airline) AS numberOfRoutes
FROM 'travel-sample'. inventory.route AS r
JOIN 'travel-sample'. inventory.route AS a ON KEYS r.airlineid
WHERE a.country = "United States"
GROUP BY a.name
ORDER BY numberOfRoutes DESC;
๋ณต์ก์ฑ ์๋ ๋ค์ฉ๋์ฑ
Couchbase๋ ํค-๊ฐ, JSON, SQL, ํ ์คํธ ๋ฐ ๋ฒกํฐ ๊ฒ์, ๊ทธ๋ํ, ์๊ณ์ด, ์ด๋ฒคํธ, ์์ด์ ํธ ์์ฑ ๋ฐ ์ด ํ์ ๋ถ์์ ํฌํจํ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ํํฉ๋๋ค. ๋ฐ๋ผ์ AI ๊ธฐ๋ฐ ์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๊ธฐ๋ฅ์ ํฌ์ํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ ์ํคํ ์ฒ๋ฅผ ๊ฐ์ํํ ์ ์์ต๋๋ค.
AI ๋ธ๋ก๊ทธ ์ฝ๊ธฐ
// key/value
await collection.upsert('destination:1000', { name: 'Paris' });
// full text search
const result = await cluster.searchQuery("travel-fts-index",
couchbase.SearchQuery.match('Eiffel Tower'), { limit: 10 }
);
// SQL++
const sqlQuery = 'SELECT name FROM `travel` WHERE country = "France"';
const sqlResult = await cluster.query(sqlQuery);
์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ AI ์๋น์ค
Capella๋ ์์ ํ ๋ชจ๋ธ ํธ์คํ , ๋ฒกํฐํ, ๋น์ ํ ๋ฐ์ดํฐ ์ค๋น, ์นดํ๋ก๊ทธ์์ ์์ด์ ํธ ์ฌ์ฌ์ฉ์ ์ํ ์๋ก์ด ์๋น์ค๋ฅผ ํตํด AI ์์ด์ ํธ ๊ตฌ์ถ์ ์คํธ๋ ์ค๋ฅผ ๋์ด์ค๋๋ค. ์ด๋ฌํ ์๋น์ค๋ Capella์ ๋ฒกํฐ ์ ์ฅ ๋ฐ ๊ฒ์ ์ง์์ ๋ณด์ํ๊ณ ์์ด์ ํธ ์์ฑ ๋ฐ ๊ฒ์ฆ์ ํ์คํํฉ๋๋ค.
AI ๋ธ๋ก๊ทธ ์ฝ๊ธฐ
p = provider.get_prompt_for("helping users to find
flights")
my_prompt, my_tools = p.prompt, p.tools
# ...for use in your agent!
for s in react_agent.stream({"messages": [{"content":
my_prompt, "type": "system"}]},
stream_mode="values"):
print(s["messages"])
์ค์ํ ์ฑ์ ์ํ ์ข ํฉ์ ์ธ ํ๋ซํผ ์๋น์ค
์นด์ฐ์น๋ฒ ์ด์ค๋ ์ฑ๊ธ ์นดํ ๋ผ ํ๋ซํผ ์ ๋ฐ์์ ๋ฐ์ดํฐ ๊ด๋ฆฌ์ ๋ํ ์ง์์ ๊ฐํํ๋ฉด์ ์ด์ฒด์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ์ทจํ๊ณ ์์ต๋๋ค. ๊ณ ๊ฐ์ด ๊ฐ์ฅ ์ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ฝ๊ฒ ์์ฑ ๋ฐ ๋ฐฐํฌํ๊ณ ๋น์ฆ๋์ค๋ฅผ ํ์ ํ ์ ์๋ AI ๊ธฐ๋ฐ ์์ด์ ํธ ๊ธฐ๋ฅ์ ํตํฉํ ์ ์๋๋ก ์ง์ํ๊ณ ์์ต๋๋ค.
ํธ๋์ญ์ ์๋น์ค
ACID ํธ๋์ญ์ , ํค-๊ฐ ๋ฐ์ดํฐ, SQL++ ์ฟผ๋ฆฌ, GSI ์ธ๋ฑ์ฑ, ํ ์คํธ ๊ฒ์, ์ง์ญ ๊ฒ์, ๋ฒกํฐ ๊ฒ์ ๋ฐ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ์ํ ์ธ๋ฉ๋ชจ๋ฆฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฐ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ณ , ์์ ํ๊ณ , ์์ ์ ์ผ๋ก ์ฒ๋ฆฌํ์ธ์.
๋ถ์ ์๋น์ค
Capella Columnar๋ฅผ ์ฌ์ฉํ์ฌ ์ค์๊ฐ JSON ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ถ์ํ๊ณ , ์ ๋ก-ETL ์์ง, SQL++ ์ฟผ๋ฆฌ, ๋๊ท๋ชจ ์ปดํจํ ๋ฐ ๋ฐ์ดํฐ ํ์ฅ์ฑ, Power BI ๋ฐ Tableau์์ ํตํฉ์ ํ์ฉํ์ฌ ํธ๋์ญ์ ์๋น์ค์ ๋ค์ ์ธ ์ ์์ต๋๋ค.
๋ชจ๋ฐ์ผ ์๋น์ค
์ธํฐ๋ท ์ ๋ฌด์ ๊ด๊ณ์์ด ํญ์ ๋น ๋ฅด๊ณ ๊ฐ์ฉ์ฑ์ด ๋ฐ์ด๋ AI ๊ธฐ๋ฐ ์ฑ์ ๊ตฌ์ถํ์ธ์. SQL ์ง์, ๊ธฐ๋ณธ ์ ๊ณต ๋๊ธฐํ, ํด๋ผ์ฐ๋์์ ์ฃ์ง๊น์ง ๋ฒกํฐ ๊ฒ์์ ํตํด ๊ฐ๋ฐ์ ์นํ์ ์ด๊ณ AI๋ฅผ ์ง์ํ๋ Atlassian์ ๋ชจ๋ฐ์ผ ์๋น์ค๋ฅผ ์ด์ฉํ์ธ์.
AI ์๋น์ค
๊ณ ์ฑ๋ฅ ์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๊ณ , ๋ชจ๋ธ์ ํธ์คํ ํ๊ณ , ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ ์ฒ๋ฆฌํ๊ณ , ์ค์๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฒกํฐํํ๊ณ , ์ด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋์ผํ ํ๋ซํผ์์ ์์ด์ ํธ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ณ ์ฑ๋ฅ NoSQL ๋ฐ์ดํฐ ํ๋ซํผ
๊ณ ์ฑ๋ฅ AI ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ , ์ ํธํ๋ ๋๊ตฌ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋์๋ ๋ฐฐํฌํ์ธ์.
์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ฌ์คํฐ ์๋น์ค
์บ์ฑ, ์ํฌ๋ก๋ ๊ฒฉ๋ฆฌ, ์๋ ์ค๋ฉ๊ณผ ๊ฐ์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก ํ์ํ ์ฑ๋ฅ์ ํ๋ณดํ์ธ์.
๋ค๋ชฉ์ ์ก์ธ์ค ๋ฐ ์คํ ๋ฆฌ์ง ์๋น์ค
Capella DBaaS๋ฅผ ํตํด ํธ๋์ญ์ , ์ด์, ๋ถ์, ๋ชจ๋ฐ์ผ ๋ฐ AI ์์ด์ ํธ ์ํฌ๋ก๋๋ฅผ ์ํ ํฌ๊ด์ ์ธ ์๋น์ค๋ฅผ ๋จ์ผ ํ๋ซํผ์์ ์ด์ฉํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ฐฐํฌ ์๋น์ค
ํด๋ฌ์คํฐ ๊ด๋ฆฌ, ์ง์ญ ๊ฐ ๋ณต์ , ์ฅ์น์ ๋๊ธฐํ, ACID ํธ๋์ญ์ ์ง์, ์ ๋ก ETL๋ก ๋ฐ์ดํฐ ์์ง, AI ์ํฌํ๋ก์ฐ ๊ฐ์ํ.
์ด๋์๋ ์์ ํ ๋ฐฐํฌ
์จํ๋ ๋ฏธ์ค, ์ฃ์ง, ๋ชจ๋ฐ์ผ ๋ฑ DBaaS, Kubernetes ํด๋ผ์ฐ๋, ์จํ๋ ๋ฏธ์ค, ๋ชจ๋ฐ์ผ ๋ฑ ์ด์์ ์ธ ๋ฐฐํฌ ์ต์ ์ ์ ํํ์ธ์.
๊ฐ๋ฐ์ ๋๊ตฌ ๋ฐ SDK
SQL++ JSON ์ฟผ๋ฆฌ, Couchbase Shell, ๊ฐ์ฒด ๊ด๊ณํ ๋งคํผ, AI ํ๋ ์์ํฌ, 12๊ฐ ์ด์์ ์ธ์ด ๋ฑ์ ์ฌ์ฉํ์ฌ ๋ ๋น ๋ฅด๊ณ ์์ฐ์ ์ผ๋ก ๊ฐ๋ฐํ์ธ์.
ํด๋ผ์ฐ๋ ํํธ๋์ ์ํํ๊ฒ ํตํฉ
์ฃผ์ ํผ๋ธ๋ฆญ ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด ๋ฐ ์๋น์ค๋ฅผ ํตํด ํด๋ผ์ฐ๋ ์ ๋ต์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ์ธ์.
AI์ ์๋ก์ด ๊ธฐ๋ฅ
์นด์ฐ์น๋ฒ ์ด์ค ์นดํ ๋ผโข AI ์๋น์ค ๋น๊ณต๊ฐ ๋ฏธ๋ฆฌ ๋ณด๊ธฐ
Capella AI ์๋น์ค๋ ๊ธฐ์ ์ด AI ๋ฐ์ดํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค:
- ๋ชจ๋ธ ์๋น์ค
- ๋น์ ํ ๋ฐ์ดํฐ ์๋น์ค
- ๋ฒกํฐํ ์๋น์ค
- AI ์๋ด์ ์นดํ๋ก๊ทธ ์๋น์ค
- ์นดํ ๋ผ AI ๊ธฐ๋ฅ