Google Docs System design | Part 1| Operational transformation | differentail synchronisation

  Рет қаралды 146,886

Tech Dummies Narendra L

Tech Dummies Narendra L

Күн бұрын

Google docs system design part 1
Includes explanation for operational transformation and differential synchronization.
system design diagram: imgur.com/a/4w...

Пікірлер: 88
@isaaczhu9223
@isaaczhu9223 5 жыл бұрын
IMHO, this video is less smooth than others and not as clear, either. Anw, it contains some complex topics where each may take a whole video itself to explain. It'd be great to explain OT and DS in more details separately.
@djcool994
@djcool994 3 жыл бұрын
He copied all other videos from Grokking System Design course. This is one of those design question that is not present there, hence the quality. :)
@athenanouhi
@athenanouhi 3 жыл бұрын
@@djcool994 disagree with you! I have completed Grokking System Design course and don't believe Narendra's videos are copy of that course. His contents are very informative and is a different source than Grokking System Design course. He does a lot of studies from companies blogs and reliable resources to make these videos.
@kaustabpaul4514
@kaustabpaul4514 6 ай бұрын
why dont use timestamp of the operation and send it over a priorityqueue or sorted queue sorted based on timestamp?
@WoodyLPG
@WoodyLPG 2 жыл бұрын
I do not 100% agree with the statement that 'lock can ever be a solution to collaborative editing', it eventually comes down to the use-case / requirement you are designing against. Quip is a perfect example of using lock for concurrent editing, it locks down a row / code block when someone is editing. Others can only acquire the lock by explicitly requesting a control from the lock holder. It works in quip because there is probably a really rare case where there will be 5+ people editing the same row at the same time in an enterprise. Maybe quip uses a different algo in a different pricing tier, but it works perfectly at my company (10k+ people worldwide). Gdoc might be designed for a more general case where there can be many more editor at same time, so they use some different algorithm
@BhanukaSiriwardhana
@BhanukaSiriwardhana 2 жыл бұрын
exactly. A lock per raw/line could work I guess
@dipendupaul
@dipendupaul 28 күн бұрын
Good point
@Mahesh-js6hp
@Mahesh-js6hp 5 жыл бұрын
How do you know what is the operation that corresponds to a` from a?
@baothai9715
@baothai9715 3 жыл бұрын
From what I understood at a high level thinking. The idea is really boils down to a' (a prime) and b' (b prime) in mathematics are represented as CHANGES of these operations. Like how you calculate for velocity/prime in math, it is the change from the old state to the new state. With his example - AT right? If there was an a with Deletion(T, 1), and b with Insertion(H, 0) -> a' should calculate for the difference of what is AT deletion is (T deletion after A is a' let's say), and b' should calculate with the insertion of H into AT is (H -> AT is an insertion before A, let's say is b'). And at the end a would combine with b' operation, and b would combine with a' operation hence resulting in a HA instead of HA|HT. The exactly logic behind it, I am not for sure, but I would suspect some kind of edit distance algorithm with some wildcard for transformation. But that is the high level overview.
@anujvishwakarma5158
@anujvishwakarma5158 5 жыл бұрын
Please try to clear the output voice. Sometimes I just miss some important words.
@vishakhasangtani3354
@vishakhasangtani3354 2 жыл бұрын
Love your content! It's really helpful for the people prepping for interviews, information in such a concise way is not available on many channels/platforms.
@Kdsiitd
@Kdsiitd 4 жыл бұрын
Can you please also make one system design video on creating a RDMS e.g. MySQL and Excel Sheet or Google Sheet?
@anthonyc8579
@anthonyc8579 4 жыл бұрын
It would be great if you used a better mic/camera, because the audio quality is a bit hard to hear.
@WittyGeek
@WittyGeek 2 жыл бұрын
Great video Narendra! I have question in terms of synchronisation of document for users across the region. For example: A document is created by user in India and he is connected to a server in India. If he is collaborating with users in US and Europe and the master copy of the document is in India server, then when they try to perform any operation on the document it will be slow to communicate with the server in India and the experience will laggy due to Round Trip Time. And we cannot distribute the same document across servers as that will cause issues with which data operation needs to be performed. How can we solve this?
@rahulsharma5030
@rahulsharma5030 3 жыл бұрын
lots of confusion after 18 mins.OT part is not clear.Also in differential sync , once client applies patch to server, and get diff back, then client will apply that diff but client might have made some other changes, again it will get diff and patch diff and send to server?
@gauravsachan5810
@gauravsachan5810 4 жыл бұрын
In the example where you give delete(T,1) can be replaced with delete(1) The delete can work with only one argument position, need to send the char at that position.
@kumarc4853
@kumarc4853 3 жыл бұрын
The longer the beard, the wiser the Guru. Thank you Guru Narendra, very informational!
@cantwaittowatch
@cantwaittowatch 5 жыл бұрын
Thanks for the wonderful video Narendra. I heard you ask for feedback, hence sharing it here. Minor constructive feedback - I heard you repeat OT so many times and explained this in various flavors still leaving the outcome as OT. I think what you are trying to say is that users do their CRUD operations and this is sent to the server, wherein the server keeps the latest state and versions, and does the right logical manipulation to get meaningful and consistent information in real-time.
@test59431
@test59431 4 жыл бұрын
@Tech Dummies....in the video at 25:36 mins, shouldnt it be D(T,2)??...and that's how you get "HA" for user 2........PLease confirm
@lmxqlmxq
@lmxqlmxq 5 жыл бұрын
to me, Operational transformation explanation was not clear
@TechDummiesNarendraL
@TechDummiesNarendraL 5 жыл бұрын
Its a difficult concept, i guess it needs a separate video, i will try to do that
@robertmartinez7938
@robertmartinez7938 5 жыл бұрын
@@TechDummiesNarendraL This is the best explaination of operational transformation that I have found. Hopefully you can use it to inform your next video. conclave-team.github.io/conclave-site/
@ishaangupta4125
@ishaangupta4125 4 жыл бұрын
Just from looking at the video, it seems that this transform function is some Blackbox utility that has all the rules precomputed. This utility is just invoked as a library at runtime when the changes are made to the server copy and the final version is broadcasted to users
@ishaangupta4125
@ishaangupta4125 4 жыл бұрын
Unless you're really interested in knowing the granular details of this algorithm, I'd say think of it as a rule engine which already knows all the possible combinations that could occur and transforms the data accordingly
@actondon6573
@actondon6573 2 жыл бұрын
waste of time, these content is at most a 10mins video
@sumonmal009
@sumonmal009 3 жыл бұрын
THIS COMMENT IS FOR MY PERSONAL REFERENCE. TO UNDERSTAND PROPERLY WATCH THE FULL VIDEO -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- why not pessimistic lock 3:13 optimistic lock 4:28 sync idea(event passing also known as OT, Diff sync) 6:00 Operational Transformation 8:50 14:35 20:05 OT example 20:54 Diff Sync (Preferred) 26:16 27:30
@johnnytan2972
@johnnytan2972 4 жыл бұрын
vid would be 100x better if your audio output is fixed.
@indrajitbanerjee5131
@indrajitbanerjee5131 2 жыл бұрын
You have put a lot of effort, BUT you repeat the same things again and again which makes the video elongated. Please try to make the videos short and crisp :) .. Kudos to your hard work for the community!!
@manishbassi
@manishbassi 3 жыл бұрын
I really like your other videos, but this is the most confusing one. You really went into mathematical side instead of sticking to core system design concepts.
@acobster
@acobster 3 жыл бұрын
That's because the mathematics are really the core design concept in a system that uses Operational Transformations. You really can't design an OT system without understanding the underlying math. I know; I've tried. :)
@suhagraval8774
@suhagraval8774 3 жыл бұрын
Differential Synchronization Research Paper: neil.fraser.name/writing/sync/
@InfinteMotivation
@InfinteMotivation Жыл бұрын
Love your content! It's really helpful for the people prepping for interviews, information in such a concise way is not available on many channels/platforms.
@bigyanrokaya842
@bigyanrokaya842 5 жыл бұрын
Hello sir I lack the basics .. Where & how should I start ?? I very much interested to learn .. Needed guidance..
@microdocs8989
@microdocs8989 5 жыл бұрын
Bigyan Rokaya ...Basic of what?
@HabibAlSaki
@HabibAlSaki 5 жыл бұрын
Check this github.com/donnemartin/system-design-primer/blob/master/README.md
@MrSaransh
@MrSaransh 5 жыл бұрын
@@HabibAlSaki Thank you very much from my side.
@jaydeeppatwardhan9120
@jaydeeppatwardhan9120 4 жыл бұрын
@@HabibAlSaki This is one of the best reading materials to learn overall system design basics!
@ameetmonty
@ameetmonty 2 жыл бұрын
Narendra, great content. One minor feedback, the audio quality can be improved
@az8134
@az8134 Жыл бұрын
Thanks for the great video. I still don't get why we need a copy in the differential synchronisation. Can you please help?
@Aavez2301
@Aavez2301 2 жыл бұрын
the content is awesome, however the audio quality very bad
@rahulsharma5030
@rahulsharma5030 3 жыл бұрын
if git diff cannot resolve conflicts, then how can differential approach? It does not have enough info how to merge.
@AbhishekSharma-si8ui
@AbhishekSharma-si8ui 4 жыл бұрын
AWESOME
@adithyabhat4770
@adithyabhat4770 9 ай бұрын
Thank you for all the system design videos, this really helped me!
@logicboard7746
@logicboard7746 2 жыл бұрын
Great session. Btw, where did you get the T-Shirt from?
@jalanubha
@jalanubha 3 жыл бұрын
Sir, MS Office 365 has all collaborative editing feature much before the release of this video. You may want to update that :)
@BrianSmith-cw7mr
@BrianSmith-cw7mr 4 жыл бұрын
Great video! Where did you learn the concepts and terminology from?
@vinitbabariya7294
@vinitbabariya7294 5 жыл бұрын
Hello Sir, Can you make video on how stock exchange server, algorithm and application works? I am very curious to know.
@abcd12272
@abcd12272 4 жыл бұрын
Why do we need two copies on the client and the server side? Why not just one on each side?
@AnilKumar-ig8kk
@AnilKumar-ig8kk 3 жыл бұрын
Hi Narendra, A big thanks to you for making the videos and explaining in detail. I am having interview's with faang and I am completely relaying your channel.
@Engineer_With_A_Life
@Engineer_With_A_Life 3 ай бұрын
How did it go bro? You got the opportunity?
@alanwong68
@alanwong68 3 жыл бұрын
Would an operational transformation face the challenge of a chatty browser-server interaction?
@devdev19
@devdev19 2 жыл бұрын
Thank you for this explanation. I had a question similar to this and your explanation helped me to understand parts I was missing!
@pk-bn1hc
@pk-bn1hc 5 жыл бұрын
Can u pls explain how do to that chunking part??
@pk-bn1hc
@pk-bn1hc 3 жыл бұрын
@Brennan Abdiel how does this answer my question ?
@anastasianaumko923
@anastasianaumko923 Жыл бұрын
🙏Thank you
@RodrigoLopesBrazil
@RodrigoLopesBrazil 5 жыл бұрын
Well, there is a good article about 4:30. en.wikipedia.org/wiki/Optimistic_concurrency_control But, optimistic concurrency control is not absolute lock-free. ;)
@viditmathur8437
@viditmathur8437 3 жыл бұрын
If the client always talks to the server, wouldn't that cause too much lag to be real-time? Would P2P communication make more sense?
@adithyaks8584
@adithyaks8584 3 жыл бұрын
It wont scale when you share docs between users then you need to handle n:n mapping / communications. If you choose a server client model then it is reduced to maintaining sync betwenn 1:n
@zacklight
@zacklight 2 жыл бұрын
Truly amazing!
@cutegeetika7132
@cutegeetika7132 2 жыл бұрын
So awesome
@amber.k
@amber.k 3 жыл бұрын
16:11
@tedthebed7877
@tedthebed7877 4 жыл бұрын
Nice explanation
@IbnIbrahem
@IbnIbrahem 4 жыл бұрын
The last bit about waiting for ack from server is a probably a bad advice, you can't hold the UI waiting for server ack, instead let the user edit and merge or force the changes once the server responds
@ishaangupta4125
@ishaangupta4125 4 жыл бұрын
Aptly put
@10clicks-freesoftwareengin51
@10clicks-freesoftwareengin51 4 жыл бұрын
Good One!
@KristopherWindsor
@KristopherWindsor 5 жыл бұрын
Buzz buzz
@pavanr92iitm
@pavanr92iitm 5 жыл бұрын
Topic suggestion: Web sockets Thank you so much for the system design collection. One thing I really like about your videos is the simplistic way of conveying the point. It's sure going to be a popular channel over due course. Keep making, keep rocking :)
@TechDummiesNarendraL
@TechDummiesNarendraL 5 жыл бұрын
Thanks and suggestions considered
@stevenlawson9553
@stevenlawson9553 5 жыл бұрын
really cool, thanks a lot
@TarunPrasadKottary
@TarunPrasadKottary 5 жыл бұрын
Do you have GIT link for all this ? Super helpful. Thank you
@TechDummiesNarendraL
@TechDummiesNarendraL 5 жыл бұрын
Git link of code? Nope
@TarunPrasadKottary
@TarunPrasadKottary 5 жыл бұрын
@@TechDummiesNarendraL not code. git instead of imgur
@michalsokolowski5728
@michalsokolowski5728 3 жыл бұрын
Very confusing explanation, the drawings don't reflect what is being told.
@vk-p
@vk-p 3 жыл бұрын
Not really clean explanation
@saiprajeeth
@saiprajeeth 4 жыл бұрын
I learned something new because of you
@MohitYadav-nu4fu
@MohitYadav-nu4fu 2 жыл бұрын
can you speak in your regular accent ?
@DanOhCaptainDaniel
@DanOhCaptainDaniel 4 жыл бұрын
Man.... so good. This guy is a great teacher! MIT? Harvard? UW? Lol
@TechDummiesNarendraL
@TechDummiesNarendraL 4 жыл бұрын
😂😂
@DanOhCaptainDaniel
@DanOhCaptainDaniel 4 жыл бұрын
@@TechDummiesNarendraL so my only gripe is I usually watch lecture vidoes in 1.5 x speed. sometimes difficult to understand then. I use caption though. Anyways, thank you so much! Really is a big help in understanding different systems design questions!
@gauravlodhi5137
@gauravlodhi5137 Жыл бұрын
content is good but sometimes your accent sucks.
@xxbighotshotxx
@xxbighotshotxx 2 жыл бұрын
This is a great video, thank you so much for sharing it! For next time, can you please remember to silence your phone? It's quite distracting
Google system design interview: Design Spotify (with ex-Google EM)
42:13
IGotAnOffer: Engineering
Рет қаралды 1,1 МЛН
From Small To Giant Pop Corn #katebrush #funny #shorts
00:17
Kate Brush
Рет қаралды 71 МЛН
💩Поу и Поулина ☠️МОЧАТ 😖Хмурых Тварей?!
00:34
Ной Анимация
Рет қаралды 2 МЛН
Players vs Corner Flags 🤯
00:28
LE FOOT EN VIDÉO
Рет қаралды 76 МЛН
ДЕНЬ УЧИТЕЛЯ В ШКОЛЕ
01:00
SIDELNIKOVVV
Рет қаралды 2,5 МЛН
Basic System Design for Uber or Lyft | System Design Interview Prep
16:18
System Design Concepts Course and Interview Prep
53:38
freeCodeCamp.org
Рет қаралды 310 М.
How to Use NotebookLM (Google's New AI Tool)
25:50
Tiago Forte
Рет қаралды 647 М.
System Design Interview: Design Uber w/ a Ex-Meta Staff Engineer
1:03:05
Hello Interview - SWE Interview Preparation
Рет қаралды 84 М.
System Design Interview: Design Dropbox or Google Drive w/ a Ex-Meta Staff Engineer
58:08
Hello Interview - SWE Interview Preparation
Рет қаралды 53 М.
From Small To Giant Pop Corn #katebrush #funny #shorts
00:17
Kate Brush
Рет қаралды 71 МЛН