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

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.

主站蜘蛛池模板: 临沭县| 双辽市| 驻马店市| 凯里市| 周至县| 昌宁县| 渝北区| 华坪县| 阳信县| 仪征市| 泰宁县| 盖州市| 德保县| 临海市| 大田县| 泾川县| 通城县| 大丰市| 左贡县| 通化县| 纳雍县| 襄樊市| 青川县| 临海市| 江门市| 丰台区| 龙门县| 抚远县| 昌乐县| 赣州市| 若尔盖县| 修文县| 普宁市| 丹寨县| 永吉县| 龙井市| 黔南| 芒康县| 安阳市| 蒲城县| 丹寨县|