ข้อมูลไม่ระบุตัวตนแบบโอเพนซอร์สและข้อมูลสังเคราะห์สำหรับ Postgres และ Mysql
(github.com/nucleuscloud)สวัสดีชาว Hada News ทุกคน เรารู้สึกยินดีที่จะเปิดตัว Neosync!
Neosync เป็นแพลตฟอร์มโอเพนซอร์สที่ช่วยให้นักพัฒนาสามารถสร้างข้อมูลเวอร์ชันที่ไม่ระบุตัวตนและเวอร์ชันข้อมูลสังเคราะห์จากข้อมูลโปรดักชัน เพื่อใช้ปรับปรุงการทดสอบบนเครื่องโลคัล การดีบัก และประสบการณ์ของนักพัฒนา โดยไม่ต้องเสี่ยงต่อปัญหาความเป็นส่วนตัวหรือความปลอดภัย
นักพัฒนาและทีมส่วนใหญ่มักมีสคริปต์ seed ฐานข้อมูลสำหรับสร้าง mock data บางส่วนไว้ใช้กับฐานข้อมูลบนเครื่องโลคัลและสเตจจิง ปัญหาที่เราได้ยินจากนักพัฒนาคือ ฟีเจอร์อาจดูเหมือนทำงานได้ดีบนเครื่องโลคัล แต่เมื่อขึ้นโปรดักชันกลับเกิดบั๊กและเคสยกเว้น เพราะข้อมูล seed ไม่ได้สะท้อนข้อมูลโปรดักชันจริง อีกปัญหาหนึ่งคือ เมื่อต้องดีบักข้อผิดพลาดในโปรดักชัน ก็ไม่มีวิธีที่ดีพอในการได้ข้อมูลที่ใกล้เคียงกับโปรดักชัน
การใช้ข้อมูลโปรดักชันโดยตรงอาจแก้ปัญหาเหล่านี้ได้ แต่ทีมส่วนใหญ่ทำไม่ได้เพราะ 1. ปัญหาด้านความเป็นส่วนตัว/ความปลอดภัย และ 2. ขนาดของข้อมูล
ดังนั้นเราจึงเริ่มสร้าง Neosync เพื่อแก้ทั้งสองปัญหานี้
เราแก้ปัญหาด้านความเป็นส่วนตัวและความปลอดภัยด้วยการทำข้อมูลไม่ระบุตัวตนและข้อมูลสังเคราะห์ คุณสามารถใช้ transformer ที่สร้างมาให้ล่วงหน้ามากกว่า 40 แบบ (หรือเขียนเองด้วยโค้ด) เพื่อทำให้ PII หรือข้อมูลอ่อนไหวไม่ระบุตัวตนและนำไปใช้บนเครื่องโลคัลได้อย่างปลอดภัย นอกจากนี้ แทนที่จะทำข้อมูลไม่ระบุตัวตน คุณยังสามารถสร้างข้อมูลสังเคราะห์ตั้งแต่ต้นให้มีลักษณะเหมือนข้อมูลโปรดักชัน และปรับให้เข้ากับสคีมาที่มีอยู่ของฐานข้อมูลได้
ปัญหาที่สองคือเรื่องขนาด ฐานข้อมูลโปรดักชันบางแห่งมีขนาดใหญ่เกินกว่าจะใส่ลงในเครื่องโลคัลได้ หรือมีข้อมูลมากกว่าที่จำเป็น นอกจากนี้ บางครั้งคุณอาจต้องการดีบักข้อมูลของลูกค้าเฉพาะราย และต้องมีวิธีกรองเอาเฉพาะข้อมูลของพวกเขา เราแก้ปัญหานี้ด้วยการทำ subsetting เพียงส่ง SQL query สำหรับกรองตารางมา แล้ว Neosync จะจัดการงานที่ซับซ้อนทั้งหมดให้
หัวใจสำคัญของ Neosync คือความสามารถในการจัดการกับ referential integrity เมื่อทำงานกับฐานข้อมูลเชิงสัมพันธ์ คุณจะต้องเจอกับ primary key, foreign key, unique constraint, การพึ่งพากันแบบวนซ้ำทั้งในตารางเดียวกันและข้ามตาราง รวมถึง sequence เป็นต้น
ดังนั้น ไม่ว่าคุณจะทำข้อมูลไม่ระบุตัวตนหรือสร้างข้อมูลสังเคราะห์ ก็จำเป็นต้องมีวิธีรักษา constraint และความสัมพันธ์เหล่านั้นไว้ ไม่เช่นนั้นสคีมาจะพัง
Neosync จัดการเรื่องนี้ให้แบบโปร่งใส หากเกิดปัญหากับ constraint เช่น foreign key เสียหาย มีคอลัมน์ใหม่ที่ต้องแมป หรือ foreign key ที่ห้ามเป็น null เราจะแจ้งให้คุณทราบเพื่อให้ดำเนินการและแก้ไขได้
วิธีการทำงานมีดังนี้
-
เชื่อมต่อฐานข้อมูลต้นทางและปลายทาง
-
กำหนดประเภทของงานและตัดสินใจว่าจะให้รันตามตารางเวลาหรือไม่ งานซิงก์จะซิงก์ข้อมูลจากต้นทางไปยังปลายทาง ส่วนงานสร้างข้อมูลจะสร้างข้อมูลสังเคราะห์ตั้งแต่ต้นและสตรีมไปยังปลายทาง
-
กำหนดสคีมาและตารางที่จะซิงก์และแปลง เลือก transformer เพื่อกำหนดวิธีทำข้อมูลไม่ระบุตัวตนหรือสร้างข้อมูลสังเคราะห์ในระดับคอลัมน์ หรือใช้ข้อมูลสังเคราะห์ที่สร้างด้วย AI เพื่อสร้างข้อมูลในฐานข้อมูลปลายทาง
-
สุดท้าย คุณสามารถกำหนด subset ได้ ซึ่งเป็นวิธีกรองข้อมูลที่จะถูกส่งไปยังปลายทาง โดยสามารถให้ custom SQL query หรือ filter สำหรับทำสิ่งนี้ได้
เท่านี้ก็เรียบร้อย! งานจะรันตามตารางเวลาที่คุณตั้งไว้ เราจัดการเรื่อง retry, backoff และ referential integrity ครอบคลุมทั้งฐานข้อมูลให้ทั้งหมด นอกจากนี้ เรายังมี API, CLI และ Github Actions เพื่อให้คุณใช้ Neosync เติมข้อมูลให้ฐานข้อมูล CI ใน CI pipeline ได้
Neosync เป็นโปรเจกต์โอเพนซอร์สที่เขียนด้วย Go และ Typescript และสามารถรันด้วย Helm หรือ Docker compose ได้ นอกจากนี้ เรายังมีแพลตฟอร์มแบบโฮสต์พร้อม free tier ที่ให้มาอย่างใจกว้าง
เรารอรับฟีดแบ็กอยู่ และยินดีต้อนรับทุกการมีส่วนร่วมเสมอ
ยังไม่มีความคิดเห็น