Summary of the report “How to become a cool database specialist” (HL2018, Data Egret, Ilya Kosmodemyansky)

    The first lecture summary with HighLoad was met positively, therefore I continue.

    The second lecture chose an interesting material that found a response both in the outline and in the hall. In my opinion, this report may be of interest to everyone, especially beginners.

    The report addresses the following issues:

    • What exactly do we want to become?
    • Do we need it?
    • Theoretical skills
    • Practical skills (technical)
    • Practical skills (non-technical)

    image

    Database is a simple thing, but people are complex, so tips may not be suitable for everyone.

    He did not follow all the tips.

    Skill map today (tomorrow may change):

    image

    It is useful for any role to have skills from neighboring areas.

    Clouds added recently. They are added to the area of ​​responsibility for budgeting.

    Do we need it?


    • It definitely won't be boring. DB is interesting.
    • While there is data, there will be bases. They may be different, but they certainly will.
    • DBA - like a plumber, but warm and behind the keyboard.

    Get a good profile education is almost impossible. There is no such education. But there are universities that teach this well. But leaving the university you will not become a specialist.

    You need to be able to quickly learn different professions.

    Tasks that need to be able to quickly solve (exam in an ideal world on dba):

    • At the time to repair the base (seen for the first time). What is the problem is not clear, but everything "slows down"
    • 10 examiners, and preferably 20-30
    • 3 ask in slack "well, how?"
    • Three more on the phone
    • 1 requires time deposit
    • 3 are introducing scram right now :) (a minute of humor)

    Basic required knowledge (theory):


    • Relational algebra (minimum, no more than 40 hours to learn)
    • B-tree in different forms and forms (deep knowledge is needed only if the task is to write your own database)

    A good introductory book: Novikov, Dombrowski, setting up database applications .

    Essence : Subd is the Framework allowing to work with data:
    • Universally
    • Reliably
    • Productively

    (!) How it does - you need to know thoroughly.

    Practical technical skills (!) (Important and necessary)


    • Concurrency control
      • 2 phase locking
      • Deadlock detection
      • Multi version concurrency control

    • Recovery
      • Write ahead log
      • Redo
      • Undo

    • Distributed transactions
      • 2-phase commit
      • Distributed recovery


    Read at least wikipedia. Better book - G. Weikum, G. Vossen, Tranactional Informatino Systems: Theory, Algorithms, and the Practice of Concurrencty Control and Recovery.
    If it is hard, for the first time you can not read about objects and search structures. Then reread.

    Underwater rocks


    • Do not confuse 2pl and 2pc (two-phase blocking and two-phase commit).
    • Do not oppose 2pl and mvcc.
    • These are pessimistic transactions shedulling algorithm - they are the most common, but the world is not limited to them.

    Learn to read books and read documentation. There are few good books on practice, they are rarely and briefly up to date.

    How to read the documentation?


    If you at least once read the documentation for each parameter of the config (for example, postgresql.conf and so on), you will become much steeper. This applies to any database.
    The recommendation is to get yourself a test server and experiment how different parameters affect.

    How to solve problems


    • Cpokoyno respond ( the keep calm! )
    • Looking for the cause: do not tune the query / know your data! - we think how the request is arranged, and not trying to solve it “on the forehead”
    • Learn ( in advance ) diagnostic tools (top, iostat, perf and etc.)
    • Write post mortem!

    Practical non-technical skills:


    • Learn to speak, write and read in Russian and in English.
    • Make reports, teach colleagues, speak at meetings, feed on Highload!
    • Learn to communicate with developers (and not only with them)

    Learn to do all this at the same time.

    Also popular now: