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

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.

主站蜘蛛池模板: 梁平县| 沙雅县| 景洪市| 新乡县| 隆安县| 东方市| 镇平县| 固镇县| 灯塔市| 英吉沙县| 芒康县| 山丹县| 定结县| 龙山县| 七台河市| 凤山市| 崇左市| 泰兴市| 古蔺县| 信丰县| 天柱县| 太和县| 加查县| 廊坊市| 宾阳县| 卢龙县| 镇平县| 崇仁县| 乐山市| 汉川市| 天镇县| 克山县| 融水| 手游| 丹东市| 东台市| 上栗县| 花垣县| 柘城县| 会东县| 林芝县|