kapa.ai ์ฐํ๋ฆฌํ๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ NoSQL์ ์ ์ฅํด๋์์ต๋๋ค. ์ด๊ฑธ ๋ฏน์คํจ๋๋ก migrationํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒ ํ๋ฉด๋ ๊น์?
์ฐํ๋ฆฌํ๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ NoSQL์ ์ ์ฅํด๋์ จ๊ณ , ์ด๋ฅผ Mixpanel๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๊ณ ์ถ์ผ์๊ตฐ์. ๊ณต์ ๋ฌธ์์์๋ NoSQL์์ ์ง์ ์ ์ผ๋ก Mixpanel๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๊ตฌ์ฒด์ ์ธ ์๋ด๋ ์์ง๋ง, ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์ ์ ์ฐจ์ Mixpanel์ ๋ฐ์ดํฐ ์์ง ๋ฐฉ์์ ๋ฐ๋ผ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ๊ถ์ฅํฉ๋๋ค.1. NoSQL ๋ฐ์ดํฐ ์ถ์ถ ๋ฐ ๋ณํ - NoSQL์ ์ ์ฅ๋ ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ Mixpanel์ด ์๊ตฌํ๋ ์ด๋ฒคํธ ํฌ๋งท(JSON)์ผ๋ก ๋ณํํด์ผ ํฉ๋๋ค. - Mixpanel ์ด๋ฒคํธ ํฌ๋งท ์์:
"event": "Signup",
"properties": {
"time": 1618716477000,
"distinct_id": "user-123",
"$insert_id": "unique-event-id",
"property1": "value1"
}
}
```LBKS - ์ฐํ๋ฆฌํ๋์ Mixpanel์ ์ด๋ฒคํธ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๋ฏ๋ก, [Mixpanel ๋ฐ์ดํฐ ๋ชจ๋ธ](https://docs.mixpanel.com/docs/migration/amplitude#differences-in-the-data-models)์ ๋ง๊ฒ ํ๋๋ฅผ ๋งคํํด์ผ ํฉ๋๋ค.LBKS2. **Mixpanel Import API๋ฅผ ํตํ ์
๋ก๋**
- ๋ณํ๋ ๋ฐ์ดํฐ๋ฅผ Mixpanel์ [Import API](https://developer.mixpanel.com/reference/import-events)๋ฅผ ์ฌ์ฉํด ์
๋ก๋ํ ์ ์์ต๋๋ค.
- ์์ cURL ์์ฒญ:
```LBKS curl --request POST \
--url '[https://api.mixpanel.com/import?strict=1&project_id=<YOUR_PROJECT_ID](https://api.mixpanel.com/import?strict=1&project_id=<YOUR_PROJECT_ID) >' \
--header 'Content-Encoding: gzip' \
--header 'Content-Type: application/json' \
--header 'accept: application/json' \
--header 'authorization: Basic <BASE64_ENCODED_SERVICE_ACCOUNT> ' \
--data-binary @โyour_events.json.gz
```LBKS - ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์
๋ก๋ํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ๋ฅผ gzip์ผ๋ก ์์ถํ์ฌ ์ ์กํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.LBKS3. **๋ฐ์ดํฐ ๊ฒ์ฆ**
- ์
๋ก๋ ํ Mixpanel์ [Insights Report](https://docs.mixpanel.com/docs/reports/insights) ๋ฑ์์ ๋ฐ์ดํฐ๊ฐ ์ ์์ ์ผ๋ก ๋ค์ด์๋์ง ํ์ธํ์ธ์.LBKS**์ฐธ๊ณ :**
- NoSQL์์ ์ง์ Mixpanel๋ก ์ฐ๋ํ๋ ๊ณต์ ์ปค๋ฅํฐ๋ ์์ผ๋ฏ๋ก, ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ ๋ณํํ๋ ์คํฌ๋ฆฝํธ(์: Python, Node.js ๋ฑ)๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ณํ ์ ์ด๋ฒคํธ ํ์์คํฌํ, distinct_id, $insert_id ๋ฑ Mixpanel์์ ์๊ตฌํ๋ ํ๋๋ฅผ ๋ฐ๋์ ํฌํจํด์ผ ํฉ๋๋ค.
- ์์ธํ ๋ฐ์ดํฐ ํฌ๋งท ๋ฐ API ์ฌ์ฉ๋ฒ์ [๊ณต์ ๋ฌธ์](https://docs.mixpanel.com/docs/migration/amplitude#import-api)์ [์ด๋ฒคํธ ํฌ๋งท ์ค๋ช
](https://docs.mixpanel.com/docs/migration/amplitude#differences-in-the-data-models)์ ์ฐธ๊ณ ํ์ธ์.LBKS๋ง์ฝ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(BigQuery, Snowflake ๋ฑ)๋ก ์ฎ๊ธธ ์ ์๋ค๋ฉด, Mixpanel์ [Warehouse Connector](https://docs.mixpanel.com/docs/tracking-methods/warehouse-connectors)๋ฅผ ํ์ฉํ๋ ๊ฒ์ด ๋ ๊ฐํธํ ์ ์์ต๋๋ค.LBKS> ๊ณต์ ๋ฌธ์์ NoSQL์์ ์ง์ ๋ง์ด๊ทธ๋ ์ด์
ํ๋ ๊ตฌ์ฒด์ ์ธ ์์๋ ์์ผ๋, ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์งํํ์ค ์ ์์ต๋๋ค. ์ถ๊ฐ์ ์ธ ๋์์ด ํ์ํ์๋ฉด Mixpanel ์ง์ํ์ ๋ฌธ์ํ์๋ ๊ฒ๋ ์ถ์ฒ๋๋ฆฝ๋๋ค.
[[Import API ์๋ด](https://docs.mixpanel.com/docs/migration/amplitude#import-api)] [[์ด๋ฒคํธ ํฌ๋งท ์ค๋ช
](https://docs.mixpanel.com/docs/migration/amplitude#differences-in-the-data-models)]
kapa.ai is still learning and improving, please let me know how I did by reacting below.
โน๏ธย Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Let me check the knowledge base for you again. One moment! ๐
์ฃ์กํ์ง๋ง, ์ ๊ณต๋ ๊ณต์ ๋ฌธ์๋ค์๋ ์ฐํ๋ฆฌํ๋(Amplitude) ์ด๋ฒคํธ ๋ฐ์ดํฐ๋ฅผ Mixpanel ํฌ๋งท์ผ๋ก ์๋ ๋ณํํด์ฃผ๋ ๋ณ๋์ ํด์ด๋ ์๋น์ค์ ๋ํ ์ธ๊ธ์ ์์ต๋๋ค.Mixpanel์ Amplitude์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋ง์ด๊ทธ๋ ์ด์ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง๋ง, ์ด ์๋น์ค๋ Amplitude API๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ง์ ์ถ์ถํ๋ ๊ฒฝ์ฐ์๋ง ํด๋น๋๋ฉฐ, NoSQL ๋ฑ ๋ณ๋์ ์ ์ฅ์์์ ์๋์ผ๋ก ํฌ๋งท์ ๋ณํํด์ฃผ๋ ๊ธฐ๋ฅ์ ์๋ด๋์ด ์์ง ์์ต๋๋ค.๋ฐ๋ผ์, NoSQL์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ Mixpanel ํฌ๋งท์ผ๋ก ๋ณํํ๋ ค๋ฉด ์ง์ ์คํฌ๋ฆฝํธ(์: Python ๋ฑ)๋ฅผ ์์ฑํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , Mixpanel ์ด๋ฒคํธ ํฌ๋งท์ ๋ง๊ฒ ๋ณํํ ํ Import API๋ก ์ ๋ก๋ํด์ผ ํฉ๋๋ค. ์๋ ๋ณํ ํด์ด ๊ณต์์ ์ผ๋ก ์ ๊ณต๋๋ค๋ ์ ๋ณด๋ ๋ฌธ์์ ์์ต๋๋ค. ๊ด๋ จ ๋ฌธ์ ์ฐธ๊ณ ์ถ๊ฐ๋ก, ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค(BigQuery, Snowflake ๋ฑ)๋ฅผ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด Mixpanel์ Warehouse Connector๋ฅผ ํตํด ๋ณด๋ค ์ฝ๊ฒ ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ง๋ง, ์ด ์ญ์ NoSQL์์ ์๋ ๋ณํํด์ฃผ๋ ๊ธฐ๋ฅ์ ์๋๋๋ค.
kapa.ai is still learning and improving, please let me know how I did by reacting below.
โน๏ธย Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.
Let me check the knowledge base for you again. One moment! ๐
Mixpanel์์ ์ด๋ฒคํธ์ ์ง๋ฆฌ์ ๋ณด(GeoIP) ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ ip
ํ๋กํผํฐ๋, Mixpanel ๋ด๋ถ์ ์ผ๋ก๋ง ์ฌ์ฉ๋๋ฉฐ, ์ค์ ๋ก Mixpanel UI์์ โipโ๋ผ๋ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋๊ฑฐ๋ ์กฐํ๋์ง ์์ต๋๋ค.
๋ง์ฝ ip ์ฃผ์๋ฅผ Mixpanel ์ด๋ฒคํธ์ ์ผ๋ฐ ํ๋กํผํฐ๋ก ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด, ํ๋กํผํฐ ์ด๋ฆ์ ip
๊ฐ ์๋ ๋ค๋ฅธ ์ด๋ฆ(์: user_ip
๋ฑ)์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.์์: LBKS{ "event": "Signed Up", "properties": { "distinct_id": "13793", "token": "mytoken", "user_ip": "203.0.113.9" // ์ด๋ ๊ฒ ๋ณ๋์ ํ๋กํผํฐ๋ก ์ ์ฅ } }LBKS
Mixpanel์ ๊ณต์ ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด,
- ip
ํ๋กํผํฐ๋ Mixpanel์ด GeoIP ์ ๋ณด๋ฅผ ์ถ์ถํ ๋ค ์ ์ฅํ์ง ์๊ณ ํ๊ธฐํฉ๋๋ค.
- ๋ง์ฝ ์ค์ ip ์ฃผ์ ๊ฐ์ Mixpanel ๋ฐ์ดํฐ์ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด, ๋ฐ๋์ ip
๊ฐ ์๋ ๋ค๋ฅธ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค
(๊ณต์ ๋ฌธ์ ์ฐธ๊ณ ).> ์ ๋ฆฌ:
- GeoIP ์ฒ๋ฆฌ๋ฅผ ์ํด ์ฌ์ฉํ๋ ip
ํ๋กํผํฐ๋ ์ ์ฅ๋์ง ์์ต๋๋ค.
- ip ์ฃผ์๋ฅผ Mixpanel ์ด๋ฒคํธ์ ์ ์ฅํ๋ ค๋ฉด, user_ip
๋ฑ ๋ณ๋์ ํ๋กํผํฐ๋ช
์ ์ฌ์ฉํ์ธ์.์์ธํ ๋ด์ฉ์ Mixpanel ๊ณต์ ๋ฌธ์ - Define IP Address์์ ํ์ธํ์ค ์ ์์ต๋๋ค.
kapa.ai is still learning and improving, please let me know how I did by reacting below.
โน๏ธย Tip: Mention @kapa.ai in the thread for follow-ups or DM the app for 1-to-1 help.