In this talk, Oren Eini, founder of RavenDB, is going to take apart a database engine on stage. We are going to inspect all the different pieces that make for an industrial-grade database engine, from the way the data is laid out on disk to how the database is ensuring that transactions are durable. We'll explore algorithms such as B+Tree, write-ahead logs, discuss concurrency strategies and how different features of the database work together to achieve the end goals.
ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΡΠΎΠ±ΠΎΡΠΎΡΠ΅Ρ Π½ΠΈΠΊΠΎΠΉ ΠΈ ΡΠΎΠ±ΠΎΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Π·Π°Π΄Π°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΌΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ° Π½Π΅Ρ ΡΠ²Π½ΠΎΠ³ΠΎ Π»ΠΈΠ΄Π΅ΡΠ°, ΠΊΠ°ΠΊ Π½Π΅Ρ ΠΈ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΠΎΠ³ΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ°, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠ΅Π³ΠΎ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΈ β¦
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½Π°Ρ ΠΠ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°ΠΌΠ° ΠΡΠ΅Π»Π΅Π½Π½Π°Ρ, ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΌΠ΅Π»ΡΡΠ°ΠΉΡΠΈΡ ΡΠ°ΡΡΠΈΡ. ΠΠ· ΡΠ°ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ°Π±Π»Π΅ΡΠΊΠ°ΠΌΠΈ, ΡΡΡΠΎΠΈΡΡΡ ΠΏΠ΅ΡΠ°Π±Π°ΠΉΡΠ½Π°Ρ Π²ΡΠ΅Π»Π΅Π½Π½Π°Ρ Π΄Π°Π½Π½ΡΡ Π² Yandex Database. Π’Π°Π±Π»Π΅ΡΠΊΠΈ ΡΠ΅ΡΠ°ΡΡ β¦
For decades, data management has been costly and slow moving. Learn how new technologies will finally eliminate the sources of data management complexity, leading to dramatically lower costs, higher β¦
Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Π―Π½Π΄Π΅ΠΊΡ Go ΠΈ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅. ΠΠΎΠΊΠ»Π°Π΄ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ Π»ΡΠ΄ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ ΠΊΠΎΡΡΡΠΈΠ½ΠΎΠ²ΡΡ Π΄Π²ΠΈΠΆΠΊΠΎΠ² ΠΈ ΡΠ°Π±ΠΎΡΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅:β¦
ΠΠΎΠΊΠ»Π°Π΄ ΠΏΠΎΡΠ²ΡΡΡΠ½ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΠΈ ΡΠ΅Π»ΡΠΌ ΡΠ°Π·Π²ΠΈΡΠΈΡ ClickHouse: ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠ°ΠΌ ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅ΠΌ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡ. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ ΠΈ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π°Ρ , Π½Π°Π΄ ΠΊΠΎΡΠΎΡΡΠΌΠΈβ¦
What do threads, atomic variables, mutexes, and conditional variables have in common? They are the basic building blocks of any concurrent application in C++, which are a big challenge even for the eβ¦
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΠΊΡΠΎΡΡ Π² ΡΠ΅Π±Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ Π¦Π ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΆΠ½ΠΎ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Golang.β¦
ΠΠ»ΡΠ±ΠΎΠΊΠΈΠΉ ΡΠ°ΡΡΠΊΠ°Π· ΠΎ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠ΅ΡΡΠΎΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅. ΠΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΠ±ΡΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ Π² ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ ΠΊ ΡΠΏΠΈΡΠΊΠ°ΠΌ ΡΠΈΠΏΠΎΠ². ΠΠΎ ΡΠ°Π³Π°ΠΌ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ Ρβ¦
ΠΠΎΠ΄ ΡΠ·ΡΠΊΠ° C++ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΌΠΈΠ½Π½ΠΎΠΌΡ ΠΏΠΎΠ»Ρ. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ code-review ΠΊΡΠ°ΠΉΠ½Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½. ΠΡΠΎΡ Π΄ΠΎΠΊΠ»Π°Π΄ ΡΠ»ΡΡΡΠΈΡ Π²Π°ΡΠΈ Π½Π°Π²ΡΠΊΠΈ Π² ΡΡΠΎΠΌ Π½Π΅Π»ΡΠ³ΠΊΠΎΠΌ Π΄Π΅Π»Π΅. ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½Π°Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎ ΠΊΠΎβ¦
Algorithms are mysterious beasts that hard to catch in the source code. However, well-chosen data structures and efficient algorithms applied to a web app is a key to performance. I want to show how β¦
ΠΠ°ΡΡΠΎΠ²ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΎΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠΎΠ² ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΡΠ΅ΡΠ°Π΅Ρ ΠΎΠ΄Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΡΡΠ³ΠΈΠ΅ β Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΠΈ Π΄ΠΎΡΠΎΠΆΠ΅, ΡΠ΅ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ. Π§Π°ΡΡΠΈΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ β¦
Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ β ΡΡΠΎ Π±ΠΎΠ³Π°ΡΠΎΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠ΅Π΅ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ, ΠΎΡΡΠ°Π²Π°ΡΡΡ Π² ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Β«ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΒ», ΡΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΡ Π΅ΡΡ ΡΡΠ΅Π±ΡΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³β¦
Too often, C++ developers tend to ignore ABI compatibility problems and think that incompatibilities are limited to changes in the interface of the library motivated by new features or bugs. However,β¦
ΠΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π² Ruby ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ ΠΈ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡΡ: ΠΎ Π΄Π°Π²Π½ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ Π²Π΅ΡΠ°Ρ (ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ) ΠΈ ΠΎ Π½ΠΎΠ²ΡΡ (ΡΠ°ΠΊΡΠΎΡΡ ΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΠ°ΠΉΠ±Π΅ΡΡ).
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ JPA ΠΈ ΡΠΎΠ½ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ. ΠΠ°ΡΠ½Π΅ΠΌ Ρ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ²: ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ N+1 Π·Π°ΠΏΡΠΎΡ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Lazy Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ. ΠΠ°Π»ΡΡΠ΅ ΡΠ³β¦
ΠΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΠΊΠΎΡΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. Π‘Π΅ΡΠ²ΠΈΡΡ ΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡΡ 99.99. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ? ΠΡΠ»ΠΈ Π΄Π°, ΡΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ . ΠΠ°Ρ Ρ Π²Π°ΠΌΠΈ ΠΆΠ΄ΡΡ Π΄ΠΈΡΠΊΡΡΡΠΈΡ ΠΎ ΡΠΎΠΌ: ΠΠ°ΠΊ β¦
Initialisation semantics is widely regarded as one of the most difficult aspects of the C++ language. We have many different kinds of initialisation and many different syntaxes for it, and they interβ¦
Java 11/12 introduced two new Garbage Collectors: ZGC and Shenandoah. The main objective of these two new GCs is to reduce GC pauses to only few milliseconds (and possibly under a millisecond), thereβ¦
ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΡΠΆΠ΅ Π²ΡΠ΅ ΡΠ»ΡΡΠ°Π»ΠΈ ΠΎ ΡΠ°ΠΌΠΎΠΉ ΠΌΠ°ΡΡΡΠ°Π±Π½ΠΎΠΉ DDoS-Π°ΡΠ°ΠΊΠ΅ Π² ΠΈΡΡΠΎΡΠΈΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° β MΔris. ΠΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π² ΡΡΠΎΠΉ ΠΈΡΡΠΎΡΠΈΠΈ ΠΏΠΎΠΊΠ° Π΅ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Β«ΠΏΠΎΠ΄ Π³ΡΠΈΡΠΎΠΌ ΡΠ΅ΠΊΡΠ΅ΡΠ½ΠΎΒ». ΠΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠ°Ρβ¦