رقص دادهها با JSONata و Debezium SMT
JSONata؛ زبان تبدیل دادهها برای JSON
اینجا پای یک ابزار جذاب به اسم JSONata وسط میاد.
JSONata یک زبان کوئری و تبدیل داده است که مخصوص JSON طراحی شده.
با JSONata چه کار میتونید انجام بدید؟
- فیلتر کردن دادهها
- تغییر کلیدها و مقادیر
- استفاده از توابع آماده یا نوشتن فانکشنهای شخصیسازیشده
- تغییر ساختار و نرمالسازی دادهها برای مصرف در سیستمهای مقصد
به همین خاطر وقتی صحبت از SMT در Debezium میشه، JSONata یکی از ابزارهایی هست که میتونه خیلی به کار بیاد.
SMT دقیقاً چه میکنه؟
Single Message Transforms قبل از اینکه دادهها توسط Sink Connector مصرف بشن، پیامها رو تغییر میده.
چند نمونه از SMTهای رایج:
- drop → حذف کردن فیلدها
- cast → تغییر نوع داده
- filter → فیلتر کردن رکوردها
- flatten → تخت کردن ساختارهای تو در تو
- regexRouter → تغییر مسیر بر اساس regex
این قابلیتها کمک میکنن دادهها به همون شکل دلخواه وارد دیتابیس مقصد بشن.
مثالهای واقعی از استفاده ما
برای اینکه تست و درک بهتری داشته باشیم، کانفیگ Debezium رو تغییر دادم و چند نمونه تغییر روی دادهها اعمال کردیم:
تبدیل Enum دیتابیس به Boolean (مثلاً gender از MALE/FEMALE به true/false)
تغییر و replace دادهها با regex (مثلاً پاکسازی ایمیلها یا شمارهتلفنها)
نرمالایز کردن دادهها برای ثبت تمیزتر در دیتابیس مقصد
به این ترتیب، دادهها قبل از ورود به سیستم مقصد دقیقاً همون فرمی رو داشتن که انتظار داشتیم.