官术网_书友最值得收藏!

IMDB versus IMDG

In-memory databases are fully functional good old RDBMS that store data in memory (RAM). When you make a database query to fetch records or you update a row, you access the RAM instead of the filesystem. RDBMS accesses the disk to seek data and that's why IMDBs are faster than the RDBMS. 

Although IMDBs store data in RAM, your data will not be lost when the machine reboots. You can configure an IMDB to recover from machine restarts/crashes. Typically stores data in memory but keeps a transaction log for each operation. The log appends transaction details at the end of the file. When the machine restarts, it reloads data from the transaction log and creates a snapshot, that's it!

So, for each update or insert operation, it writes a transaction log to disk; shouldn't it slow down the performance? Not really. It is like writing logs for your Java application using Log4j; sequential disk operations are not slow as the disk spindle doesn't move randomly.

Then how is an IMDG different than an IMDB? An IMDG also keeps the data in-memory and has capabilities to recover from failures, as it keeps transaction logs. An IMDB is fully ANSI SQL-compliant but IMDG offers limited support for ANSI SQL; rather, IMDG recommends key-value pair or MapReduce access. IMDB lacks parallel processing of distributed SQL joins. IMDB cannot scale like IMDG; if we add more IMDG nodes, then it can scale more and store more data. IMDG offers ACID compliant DB access and many other features.

主站蜘蛛池模板: 新龙县| 平安县| 乐至县| 桂平市| 灵丘县| 黄山市| 琼中| 绍兴市| 南充市| 台北县| 抚顺县| 工布江达县| 九江市| 和静县| 固阳县| 松潘县| 道孚县| 望城县| 南宁市| 博湖县| 江永县| 开阳县| 林周县| 凤城市| 山阴县| 芜湖县| 土默特右旗| 芜湖县| 达尔| 东兰县| 潮州市| 竹山县| 五原县| 万州区| 聊城市| 临武县| 台前县| 探索| 古丈县| 永吉县| 稻城县|