متغیرهای immutable و distributed system

سلام ،
آیا immutable با سیستم های توزیعی رابطه ای ،نقشی داره ؟ اگر داره به چه دردی میخوری ؟
اگر ممکن باشه یک مثال ساده بزنید تشکر

2 پسندیده

دراین رابطه دونفربسیار سخنرانی کردند
Rich Hickey سازنده clojure و Greg Young من خلاصه این جا توضیح میدم در سیستم های distributed امروزی اکثرا آخرین حالت سیستم به صورت داده نگهداری میشه و immutable نیست واین نه تنها باعث بسیاری مشکل از نظر consistency میشه بلکه کلی داده در طول زمان از دست میره hickey و young بر این عقیده هستند که هر تغییر با زمان آن باید ذخیره بشه hickey دیتابیس datomic و برای این کار نوشته یعنی هر update یا create در دیتابیس با زمانش به صورت immutable ذخیره میشه و این بسیاری از مشکلات distributed system وحل میکنه و تغییر داده در طول تاریخ و مشخص میکنه
Greg young الگو event sourcing و cqrs معروف کرد
که در این سیستم ها تمام تغییرات بازمانشون به صورت رخداد ذخیره می‌شود event
و سیستم های دیگر به event ها گوش می‌دهند و فرمان از آنها درست می‌کنند command

3 پسندیده

خیلی ممنون
یکی هم immutable در همزمانی چه کاربردی داره ؟ من اینجوری متوجه شدم که چون نوع داده تغییر ناپذیر هست مثلا در چند پردازش که همزمانی دارند اگر متغیری به نام x داشته باشیم که immutable هست هر پروسس که این متغیر رو تغییر میده در حقیقت پشت صحنه یه متغیر جدید ساخته میشه و متغیر اصلی بدون تغییر میمونه و اینجوری تداخلی پیش نمیاد در پردازش های همزمان .
من درست متوجه شدم ؟ اگر درست نیست واقعا ممنون میشم توضیح بدید با یه مثال ساده
ببخشین خیلی سوال میپرسم اما چون این موارد رو نمیدونم تو کدی هم که مینویسم تاثیر میزاره

کل داستان رو درست متوجه شدین اما خوب جزئیات زیادی داره. همین چیزی که فرمودین رو در scale بزرگتر برای سیستم های توزیع شده هم می شه در نظر گرفت

1 پسندیده

منظور از immutability فقط نوع داده نیست، منظور دقیقا خود دادست که غیر قابل تغییره

1 پسندیده