When should you shard your database?

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 พ.ค. 2024
  • Database Application level sharding is the process of splitting a table into multiple database instances in order to distribute the load. However, Sharding a database is an expensive operation (maintainability and overhead) and I suggest you do that only when you absolutely need to. That means when your single instance database can no longer serve queries with minimum latency. So I suggest you monitor that and only shard if necessary.. I rather do replication make master / backup and make requests read from replica than Sharding just because it is easier.. good question... nice idea for a video
    Time codes
    0:00 Intro
    5:00 Partition horizontally
    7:45 Replication (Master/backup) Scale reads
    11:00 Scale writes by region
    12:30 Sharding
    16:40 Sharding in TH-cam
    🏭 Software Architecture Videos
    • Software Architecture
    💾 Database Engineering Videos
    • Database Engineering
    🛰 Network Engineering Videos
    • Network Engineering
    🏰 Load Balancing and Proxies Videos
    • Proxies
    🐘 Postgres Videos
    • PostgresSQL
    🚢Docker
    • Docker
    🧮 Programming Pattern Videos
    • Programming Patterns
    🛡 Web Security Videos
    • Web Security
    🦠 HTTP Videos
    • HTTP
    🐍 Python Videos
    • Python by Example
    🔆 Javascript Videos
    • Javascript by Example
    👾Discord Server / discord
    Support me on PayPal
    bit.ly/33ENps4
    Become a Patreon
    / hnasr
    Stay Awesome,
    Hussein
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 150

  • @wh264
    @wh264 3 ปีที่แล้ว +147

    Thanks for the excellent content. I've summarized this for my own understanding.
    Before you Shard, try the following first
    0. Understand what your actual problem is before optimizing(too slow reads vs too slow writes) Analyze your slowest queriers and see why its slow: th-cam.com/video/-qNSXK7s7_w/w-d-xo.html Create indexes on appropriate columns and tune your data schema.
    1. Horizontal Partitioning - Have partition key(mostly on primary key) and split database into different ranges. This will create smaller B-trees on the indexes.
    2. Vertical Partitioning - When you have columns that you rarely access, and you cut a column out of the main database. This will make reads faster for frequent queries and slower for not frequent queries and make your B-trees smaller(less space in memory also)
    Partitioning Video: th-cam.com/video/QA25cMWp9Tk/w-d-xo.html
    ----

  • @gregt0m
    @gregt0m 3 ปีที่แล้ว +43

    Hussein, you have a great style of presentation with proper tone, cadence, painting pictures without use of displays, and humor thrown in the right places. All this with no sense of arrogance exuded. Love your videos.

  • @dipunjgupta8082
    @dipunjgupta8082 3 ปีที่แล้ว +25

    Most underrated channel on youtube. Sometimes I get bored from work and I come here to learn something interesting. You don't even know how much your videos mean to me. Thanks a lot Hussein!
    I am gonna use social distancing analogy a lot from now on 😂

  • @tahoemph
    @tahoemph ปีที่แล้ว +11

    One thing you don't mention which is important to understand is that read replicas cause some load on your primary for replication. Much like anything else, as you said, it isn't free. But it is fairly cheap.
    One use case you missed for sharding is data sovereignty. Sometimes data can be split into groups by location (e.g. zip country code) which not only can help with performance but can meet legal requirements for where data lives.

  • @aphroditesempai2186
    @aphroditesempai2186 3 ปีที่แล้ว +1

    Hi thanks for your efforts. Its very hard to find experienced devs sharing their industrial challenges and providing good insights. Hoping to learn more. Keep up the work. Fighting !☺👏👏

  • @ahsaanali4512
    @ahsaanali4512 ปีที่แล้ว

    I really love to watch your videos even though those topics are not the part of the my job but I watch it because I know I'll definitely learn something new. So keep updating us and keep uploading, appreciable.

  • @natem889
    @natem889 3 ปีที่แล้ว

    Loved the way you explained. After a long time, I listened to some video for the whole duration.

  • @phillbaska
    @phillbaska 3 ปีที่แล้ว

    Great video as usual. Great sense of humour and your explanations are very easy to follow.

  • @varatharajandhamotharan1511
    @varatharajandhamotharan1511 2 ปีที่แล้ว

    I would say under rated channel. He is not teaching but he is discussing in a very informative way

  • @MarcMcRae
    @MarcMcRae 3 ปีที่แล้ว +1

    Very good background knowledge leading into the sharding explanation. Nicely explained. Thank you!

  • @hrayrpetrosyan5330
    @hrayrpetrosyan5330 2 ปีที่แล้ว

    Thank you so much, Hussein! You're doing such a good job.

  • @vnaveenkumar982
    @vnaveenkumar982 3 ปีที่แล้ว

    The best content on the internet with a crazy presentation skills. it was wonderful Hussein.

  • @sundeepdharma
    @sundeepdharma 4 ปีที่แล้ว +15

    Sharding is not really needed as you mentioned we can go for partitioning and local indexes within the partitions itself. What if writes are more there are various options in enterprise products, I worked long back with Oracle RAC setup with vplex managing the data storage for different nodes. Avoid writing component logging or audit trail logging to RDBMS instead write to nosql. I personally think only business data (OLTP) should be there in RDBMS all others can go log database (nosql) or splunk or datadog etc...

  • @WeiLiuhaha
    @WeiLiuhaha 2 ปีที่แล้ว

    It's such a pleasure to watch! Fun and knowledgeable!

  • @punerealestatebuilder
    @punerealestatebuilder 2 ปีที่แล้ว

    I saw many videos but the way you explained horizontal/ vertical partitioning in just 30 sec is going to be with me foreever

  • @adityajoardar578
    @adityajoardar578 2 ปีที่แล้ว +2

    This channel is addictive

  • @dexterlohnes
    @dexterlohnes 8 หลายเดือนก่อน

    Great video! Thanks so much for taking the time to make this.

  • @cloud5887
    @cloud5887 3 ปีที่แล้ว +3

    Lol I love the way you explain stuff. Subscribed!

  • @zorsen117
    @zorsen117 3 ปีที่แล้ว +35

    16:11 do you really want to do this with you life? I don't know man, I should have been a cook or something.

    • @dejangegic
      @dejangegic 3 ปีที่แล้ว

      @Jamison Grotzinger I will kindly ask you to fuck off

  • @mramakrushnaYT
    @mramakrushnaYT 3 ปีที่แล้ว +1

    That's wonderfull Hussein, Understanding the Why before going for a specific tech..

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      Thanks Rama!

  • @RAYGUNWOD
    @RAYGUNWOD 3 ปีที่แล้ว +1

    Fantastic video - thank you so much Hussein!

  • @karthikeyansrinivasan52
    @karthikeyansrinivasan52 4 ปีที่แล้ว +11

    Another fantastic video from this great guy to start an another beautiful day!!!

  • @section9999
    @section9999 3 ปีที่แล้ว +7

    Wow a whole ton of good stuff here. Props to you good sir!

    • @hnasr
      @hnasr  3 ปีที่แล้ว +3

      DataSurgeon 369 😊🙏 enjoy thanks for your comment

  • @vishalsrane
    @vishalsrane 2 ปีที่แล้ว

    knowledge we get here is pure gold. Thank you 🙏

  • @rodrigocaballerohurtado5367
    @rodrigocaballerohurtado5367 3 ปีที่แล้ว +7

    Hussein: You cannot longer perform transactions with sharding
    Me: thanks captain, that's it for me on the subject

  • @abdelrahmanshehata7942
    @abdelrahmanshehata7942 2 ปีที่แล้ว +1

    You are such a genius !!!
    You started by answering the question very early in the video, I like it.
    Then you started explaining everything very nicely !!!
    Perfect !!! Go on maaaaaaan

    • @hnasr
      @hnasr  2 ปีที่แล้ว +1

      Im Glad to you liked it!
      بالتوفيق

  • @neeravarora530
    @neeravarora530 3 ปีที่แล้ว +2

    Awesome video Hussein , everytime i learn something new from your videos . Thanks for sharing your knowledge.

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      I am glad you are! Thanks for your comment

  • @stephennjuguna3793
    @stephennjuguna3793 2 ปีที่แล้ว

    Just Wow! Learning so much from you Hussein

  • @ReyAlexam
    @ReyAlexam 2 ปีที่แล้ว

    I learned a lot by this. Thank you

  • @aashishgoyal1436
    @aashishgoyal1436 3 ปีที่แล้ว +2

    Thanks a lot Hussein. Really nice and engaging video with awesome explaination
    You deserve more views
    Gonna share it with my peers.cheers

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      Aashish Goyal thank you 🙏

  • @ssksarraju
    @ssksarraju 3 ปีที่แล้ว +1

    Great video. Love the way you explain the things. I wish you had elaborated little more or probably make a new video on why transactions are tough with sharding.

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      Correct that would require another video because its a deep topic , thanks for your comment ❤️

  • @user-uk2vy3cq9k
    @user-uk2vy3cq9k ปีที่แล้ว

    Great video! I respect that you mentioned go

  • @ganeshkhirwadkar4127
    @ganeshkhirwadkar4127 3 ปีที่แล้ว

    Being a non-backend developer I still think atleast while watching your videos that I am a one of them !!! Superb and Easy Explaination

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      ❤️ thanks Ganesh!

  • @tarekali7064
    @tarekali7064 4 ปีที่แล้ว +1

    Great videos! Thank you for making them!

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      Thanks Tarik!

  • @101kawsar
    @101kawsar ปีที่แล้ว

    My man often mentions Django, I love it :)

  • @TheGdhungana
    @TheGdhungana 4 ปีที่แล้ว

    Glad to see you bro..I was wondering how you look like..!

  • @abhishekt800
    @abhishekt800 2 ปีที่แล้ว

    loved it..thanks for the explanation

  • @banxt
    @banxt 2 หลายเดือนก่อน

    “Predictably Irrational” is a very good book! :-p

  • @judylee9452
    @judylee9452 2 ปีที่แล้ว

    You are amazing . You are so wise. Thank u.

  • @kapilrbagul
    @kapilrbagul 4 ปีที่แล้ว +14

    Excellent one... just wanted to know your approach to be on top of latest technology. Which resources do you use? Which technology podcast do you listen? Can you make video on this topic? 😊

  • @andreigatej6704
    @andreigatej6704 4 ปีที่แล้ว +3

    Great content! Thank you! Do you have any particular resources for learning BE concepts? (except for a job :D)

  • @nadertarek4822
    @nadertarek4822 2 ปีที่แล้ว

    When I find this DENSE content really enjoyable just like I'm watching Netflix, that does mean one thing you are really GREAT!!!, Thank you so much Hussein

  • @KuriaNdungu
    @KuriaNdungu 2 ปีที่แล้ว

    Excellent content bro

  • @yahyaandizan9561
    @yahyaandizan9561 3 ปีที่แล้ว

    Good content for the basic understanding. Excellent

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      Glad it was helpful!

  • @bashashaikabdul
    @bashashaikabdul 2 ปีที่แล้ว

    Great explanation

  • @DipanjalMaitra
    @DipanjalMaitra 2 ปีที่แล้ว

    You are awesome. I have learned a lot from you. Thank you for being there.
    But I have got a little confusion at 10:41. I agree the db requestes from clients will pass through the reverse proxy but the proxy should be SQL Aware like ProxySQL but can Nginx or HAProxy be configured as SQL Aware LB?

  • @harshitbajpai4942
    @harshitbajpai4942 2 ปีที่แล้ว

    The content is excellent for learning, really clears lots of stuff. But if anyone watching this video has an interview lined up(which is most probably true), don't explain in this fashion the strategy you choose to justify the problem you would be solving.

  • @krisna44
    @krisna44 2 ปีที่แล้ว

    Your presentation is excellent

  • @libranpal
    @libranpal 2 ปีที่แล้ว +1

    Just to be clear, you don't sacrifice the transactional capability per se; you can't do it across shards but if the sharding is designed to keep every shard with no client depedency on the other shards, the transactional capability isn't lost. You may want to think of it for any cloud company where the database sharding is done per tenant and every tenant has private data. Says shards are created on a range of tenant names (say a-c for shard1, d-e for shard2 etc)
    , you aren't going to loose any capabilities here.

  • @sanjaybhatikar
    @sanjaybhatikar 2 ปีที่แล้ว

    Beautiful, thank you :)

  • @thulasipb123
    @thulasipb123 2 ปีที่แล้ว

    Excellent video. Thank you

  • @omose14
    @omose14 2 ปีที่แล้ว

    Awesome bro!

  • @peop.9658
    @peop.9658 7 หลายเดือนก่อน

    Can you name the youtube's podcast you referred to?

  • @shivashankar_1998
    @shivashankar_1998 3 ปีที่แล้ว

    Can we use timescale DB extension with postgres for faster writes ?

  • @lucavogels
    @lucavogels 4 ปีที่แล้ว

    Really great!

  • @shaheerzaman620
    @shaheerzaman620 4 ปีที่แล้ว

    Great video Hussein. Can you please make a video on indexing and Acid transactions? That would be great! Thanks.

    • @hnasr
      @hnasr  4 ปีที่แล้ว

      shaheer zaman thanks Shaheer! Check out my ACID video here Relational Database ACID Transactions (Explained by Example)
      th-cam.com/video/pomxJOFVcQs/w-d-xo.html .. i am still need to work on the indexing video coming soon :)

  • @zaheerkhan8097
    @zaheerkhan8097 ปีที่แล้ว

    One question I had does databases like Postgres provide facility for automatic sharding . If yes what process do they follow while doing the same

  • @pradeepgupta4647
    @pradeepgupta4647 3 หลายเดือนก่อน

    My search ends here, to clear my doubt thank you.

  • @ackrman
    @ackrman ปีที่แล้ว

    @14:00 is it still the case? I read that mysql supports transaction on sharding xa transactions or distributed transactions. And mysql nda cluster support acid.

  • @yashverma7084
    @yashverma7084 2 ปีที่แล้ว

    thanks for the video

  • @devendranarayan9748
    @devendranarayan9748 2 ปีที่แล้ว +1

    Sometimes you sound like Gru 😂
    Great content.

  • @kaushalendrapandey893
    @kaushalendrapandey893 3 ปีที่แล้ว

    Hi
    A very nice video.
    I want to know the following:
    I am have a "users" table with huge rows in it, it is having join with other 4 tables, what will happen If I partition the "Users" table. With the Joins and older queries will work as it is or I need to make changes in that, If yes what changes I need to do exactly to make the old queries work.

  • @MohamedZiada
    @MohamedZiada 4 ปีที่แล้ว

    always great video Hussein, thank you. Journal, logging all the traffic for website/ application, could be Database heavy write , right?

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Thanks Mohd! and Correct, logging is a database write heavy operation so you would choose an LSM based DB such as RocksDB or myRocks.. Check out my database engines video for more details on this topic

  • @krorrarst9350
    @krorrarst9350 2 ปีที่แล้ว

    Life Saver!

  • @robertkozik4845
    @robertkozik4845 3 ปีที่แล้ว +3

    Just pointing this out: You can overwhelm a MySQL server's IO capacity very quickly with php-fpm at scale. Because each request spins up its own database connection, so unless you're throwing their write requests into a message queue then bulk inserting it's contents via some stateful service each connection = at least 1 IO event. And if you're co-locating odds are you don't want to set your io_capacity parameter above 2000 IOPS because of SSD burnout, and for php-fpm's concurrency model(or lack thereof) it's not hard to hit that threshold at even a small scale. Typically php-fpm sites of scale you'll see 30-50k IOPS, so even a cloud-based solution would be cost prohibitive.
    Not trying to be a jerk or anything because this requires a lot of specific knowledge of a particular programming language's execution model. But having said that, it's totally possible to overwhelm IO without a few million daily page views. Since you gotta keep in mind 80% of the traffic hits in 20% of the day. That's also basically the mark when Web 2.0 companies of yesteryear started sharding their LAMP apps.

    • @ethanj1533
      @ethanj1533 2 ปีที่แล้ว

      So just don’t use fpm?

  • @sanjaybhatikar
    @sanjaybhatikar 2 ปีที่แล้ว

    THOU SHALT NOT over-engineer too early. I am definitely putting that up on my wall :)

  • @donlywaybv
    @donlywaybv 3 ปีที่แล้ว +1

    I'm your subscriber :D

  • @serhiihorun6298
    @serhiihorun6298 3 ปีที่แล้ว

    Cool thank you!

  • @Wherrimy
    @Wherrimy 3 ปีที่แล้ว +1

    Thanks, Ill stick with sharting

  • @SyedHaris007
    @SyedHaris007 3 ปีที่แล้ว

    Please make a video on Elastic search

  • @pavelkravchenko2810
    @pavelkravchenko2810 2 ปีที่แล้ว +1

    Why logic on client? You can make service that deals with this requests from client and send them to the right dB server? Or I don't understand something?

  • @desiaclementslewis8318
    @desiaclementslewis8318 3 ปีที่แล้ว

    thank you

  • @minhthinhhuynhle9103
    @minhthinhhuynhle9103 2 ปีที่แล้ว

    is Replication increase reading capacity via Load balancing mechanism ???
    Since I stackoverflow all months and cannot found any appropriate article about this. Even MongoDB Legacy Docs did not mention reading load balancing 😢

  • @elmeroranchero
    @elmeroranchero 2 ปีที่แล้ว

    is there any risk of outdated data if the slaves do not sync on time? how do we deal with this?

  • @lionelarucy4735
    @lionelarucy4735 3 ปีที่แล้ว

    Love your videos, what do you think of the 'New' SQL Databases such as CockroachDB and using them instead of complicating your life with sharding?

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      I need to do my research of them but I do this there are use cases for them. I still don’t know what is new about them so can’t really comment

    • @lionelarucy4735
      @lionelarucy4735 3 ปีที่แล้ว

      @@hnasr Cool, I look forward to hearing your take on them, they're what I opt for in situations where I think I'd have to shard because sharding isn't fun. I've also tried others like Citus which are pretty great but a bit more work to get the most out of.

  • @asdfasdfasdfasdf219
    @asdfasdfasdfasdf219 3 ปีที่แล้ว

    I didn't get the difference between scaling writes by region vs sharding. Is it the same but the first one is sharding by region?

  • @sahersalamh9032
    @sahersalamh9032 3 ปีที่แล้ว

    Amazing video, please make an arabic channel, we are missing this content here dude.

  • @nykid30
    @nykid30 2 ปีที่แล้ว

    So this is mostly focused on SQL right?

  • @Faz13able
    @Faz13able 3 ปีที่แล้ว

    Hello I have log server. There is not transaction. Its straight write and read. No update or delete will be performed. And no rollback is necessary. Problem is minimum log size is 400 GB plus which consists of raw text data only. DB size increases 40 GB per day min. So you understand there is a a lot of write in the database . Problem is there is too much write in one instance that I can not read the database. Its a MongoDB database and I searched and found I can do sharding to distribute the read write. And Mongo shard comes with tool like mongos which will distribute my query from client based on lets say timestamp. So should I proceed with this plan or should I do partition first? And also the pipeline is at development stage so if u recommend I can still change DB to postgres or other DB technology. Thanks.

  • @h-go4fk
    @h-go4fk 2 หลายเดือนก่อน

    Remember, when you are confused and you dont know why its slow, always start with distributed caching

  • @EzequielRegaldo
    @EzequielRegaldo 3 ปีที่แล้ว

    Thats why i love mongo db, sharding Is a breeze but can be better with relations, i want it, i need ir. Mongo router rocks

  • @nathanbenton2051
    @nathanbenton2051 3 ปีที่แล้ว

    Awesome video and thank you! What are 'file descriptors'? I think I heard you correctly at ~ 8:15.

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      Thank you!! File descriptors are handle to the TCP connection I don’t know much about them (which is good means I need to read more about them and probably make a video)
      Here is the wiki en.wikipedia.org/wiki/File_descriptor

  • @DheerajKumar-wk9xi
    @DheerajKumar-wk9xi 2 ปีที่แล้ว

    Good Content Hussein, but that will be Great if you use a whiteboard of some pictorial content instead of showing everything in Air.

  • @venkateshkadali1137
    @venkateshkadali1137 3 ปีที่แล้ว

    Can we add a reverse proxy in between all our application servers and Sharded databases which handles all the routing logic? In this way, we can also avoid duplicate code in multiple application servers.

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      Yup! You are describing how Vitess was built and how many other apps before it. Good thinking 👍

  • @momardiouf9141
    @momardiouf9141 4 ปีที่แล้ว

    Greate content Hussen and thanks for sharing we learn a lot with you
    I just comme back to a previous question asked by another person in comments, he sais : "just wanted to know your approach to be on top of latest technology. Which resources do you use? Which technology podcast do you listen? Can you make video on this topic? "
    Can you answer to this please ? It will help us agains
    Thanks again for this greate content

    • @hnasr
      @hnasr  4 ปีที่แล้ว +1

      Momar Diouf thank you Momar! Appreciate you 🙏
      I learn by listening to podcast, watching videos , reading and implementing the thing . I always ask why a tech exists before I ask what.
      I made few videos on the topic of learning check them out
      When Learning Backend Engineering Ask Why, not What (Minute Engineering)
      th-cam.com/video/67DglLwnBTU/w-d-xo.html
      My Preferred Method of Learning Backend Engineering Technologies
      th-cam.com/video/4NsWnT_-FoE/w-d-xo.html
      Learning at Home, Consistent Hashing, Empathy with Engineers and More - Software Chat
      th-cam.com/video/6PrR6SW4QGM/w-d-xo.html
      Advice for Junior backend engineers who just started their new jobs in software companies
      th-cam.com/video/V3C0VvNrFZ8/w-d-xo.html

    • @momardiouf9141
      @momardiouf9141 4 ปีที่แล้ว

      @@hnasr Thanks for the reply. I will check the links
      Thanks

  • @uwemnkereuwem6272
    @uwemnkereuwem6272 ปีที่แล้ว

    How about multi-master replication or bi-directional replication?

  • @AbleToLiveHere
    @AbleToLiveHere 3 ปีที่แล้ว

    Your videos are great. Thank you

    • @hnasr
      @hnasr  3 ปีที่แล้ว

      THANK you so much! appreciate it

  • @nikolakolarov1416
    @nikolakolarov1416 3 ปีที่แล้ว

    Great video! Are you planning to make a separated video about Vitess?

    • @hnasr
      @hnasr  3 ปีที่แล้ว +1

      Nikola Kolarov thank you! Yes I am planning to make a video on Vitess

    • @nikolakolarov1416
      @nikolakolarov1416 3 ปีที่แล้ว

      Hussein Nasser Awesome

  • @sayanchakraborty9581
    @sayanchakraborty9581 3 ปีที่แล้ว

    Just a quick question, how is 'scale writes by region' (using multiple master nodes in multiple regions and directing requests to nodes based on some key) different from sharding?

    • @charan8820
      @charan8820 2 ปีที่แล้ว

      As he mentioned, While sharding ACID properties will not be applicable. Now in case of keeping data in regional database you still have ACID properties and you can sync the data later.

  • @andresgutierrez1804
    @andresgutierrez1804 3 ปีที่แล้ว

    What about the CQRS

  • @nitreall
    @nitreall 2 ปีที่แล้ว

    When exactly though? Share some numbers

  • @mustafaalmulla
    @mustafaalmulla 3 ปีที่แล้ว

    FYI, MongoDB have ACID transaction support with sharding

  • @viraj_singh
    @viraj_singh ปีที่แล้ว

    so my takeaway is
    sharding is for scaling write queries (which is rare)
    partition is for scaling read queries

  • @kapssul
    @kapssul 4 ปีที่แล้ว +3

    Could you make a video about the 5G impact on (Cross-Shard Queries) knowing that 5G Latency is below 1 milliseconds..
    1 - Could that bring sharding and cloud computing to the next level ?
    2 - What will happen to data centers infrastructure, and also to database query languages in the future ?
    3 - Will that reduce the data management cost for business owners ?

    • @hnasr
      @hnasr  4 ปีที่แล้ว +4

      What amazing thoughts provoking questions Kapssul! Love them. That is going to take some time to research and answer because I have no idea. 5G is indeed a revolutionary tech and it will spin up the software engineering tech on its head.. thanks!!

    • @kapssul
      @kapssul 4 ปีที่แล้ว +3

      @@hnasr I am on the way, you are already there.. you could grab the information quickly and more accurately, and share with us bit by bit your thoughts.. keep posting.. thanks for that quality content.. we learn a lot..

  • @Euquila
    @Euquila 3 ปีที่แล้ว

    sharding is like sharting, unpleasant but sometimes necessary

  • @ajaynair3366
    @ajaynair3366 3 ปีที่แล้ว

    Do you have numbers that denote when a database is ready for partitioning, sharding etc?

    • @user-bk5xo1gj7k
      @user-bk5xo1gj7k 6 หลายเดือนก่อน

      there are no numbers i'm afraid. you have to know your system well enough to realize the problem and analyze what solution suits you best.
      for example, if you are working with sensitive data, that you are legally bound to keep in certain locations, then you need sharding for that if you wanna expand to different regions.
      one of the reasons numbers do not work is the nature of data itself. a table with 2 columns and 50 columns are going to have different query times. then it depends on the query itself. Also the technology you are working on etc.
      so there are simply too many variables to have a standard.
      I can tell you from experience, there was one system i was working on where we had around 200 mill rows in a single table. we didnt need any sort of partitions there.
      On the other hand, i had a separate system, a little bit older tech as well, but data was vastly different. things came to a point where we needed partitions at 30 mill rows. index didnt cut it anymore.
      the point is, it has to be determined for each system. we can have some guesses, but it wont be concrete.
      I hope this makes sense :)

  • @dotcore1150
    @dotcore1150 8 หลายเดือนก่อน

    Plz do something practical 🎉

  • @crabjuice47
    @crabjuice47 3 ปีที่แล้ว +1

    Bro you are fucking brilliant and that you are willing to teach others what you know in such a good engaging way I love it. God Bless you even if you don't believe in God or not. :)

  • @miloventimiglia8547
    @miloventimiglia8547 2 ปีที่แล้ว

    Just for my understanding, what is the difference between the videos presented here and the Udemy course? Is the Udemy course more code-oriented? Thanks

    • @hnasr
      @hnasr  2 ปีที่แล้ว

      More detailed, structured with hands-on examples.

  • @ayushjindal4981
    @ayushjindal4981 ปีที่แล้ว +1

    Hi Nasser,
    For a system like Uber Eats , I believe we can split our Users, Orders, Restaurant, Dishes tables based on location. Now the question is shall we choose sql or nosql here? We generally go for noSQL because it avoid joins which can be costly in sharded DB, but if we maintain our tables on basis of location then there wont be any such case where we will join from table in another DB. So, which one shall we use???