# in-memory database

Published articles for in-memory database.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Snapshotting in a high throughput shared nothing database

DevFeed: [Snapshotting in a high throughput shared nothing database](<https://devfeed.tech/articles/snapshotting-in-a-high-throughput-shared-nothing-database-39632.md>)

Original publisher: [Read original article](<https://www.gauravsarma.com/posts/2025-01-27_Snapshotting-in-a-high-throughput-shared-nothing-database>)

Published: 2025-01-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Gaurav Sarma's Blog](<https://devfeed.tech/sources/gaurav-sarma-s-blog.md>)

Topics: [Database](<https://devfeed.tech/topics/database.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [in-memory database](<https://devfeed.tech/topics/in-memory-database.md>), [Concurrent Programming](<https://devfeed.tech/topics/concurrent-programming.md>), [Redis](<https://devfeed.tech/topics/redis.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [go](<https://devfeed.tech/tags/go.md>), [golang](<https://devfeed.tech/tags/golang.md>), [goroutines](<https://devfeed.tech/tags/goroutines.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [redis](<https://devfeed.tech/tags/redis.md>), [single-threaded](<https://devfeed.tech/tags/single-threaded.md>)

### AI overview

This article explains the requirements and design considerations for adding point-in-time snapshots to a high-throughput, shared-nothing in-memory database written in Go. It examines copying data during writes, compares the approach with Redis's copy-on-write snapshotting, and begins testing copy-on-write behavior in a Go process.

### Source excerpt

. [Snapshotting in a High-Throughput Shared-Nothing Database](snapshotting-in-a-high-throughput-shared-nothing-database-cover...

## Learning full stack - Implementation details

DevFeed: [Learning full stack - Implementation details](<https://devfeed.tech/articles/learning-full-stack-implementation-details-28713.md>)

Original publisher: [Read original article](<https://jeroenmols.com/blog/2024/11/14/full-stack-implementation/>)

Author: info@jeroenmols.com (Jeroen Mols)

Published: 2024-11-14T00:00:00Z

Content type: tutorial

Language: en

Sources: [Jeroen Mols](<https://devfeed.tech/sources/jeroen-mols.md>)

Topics: [Full Stack Development](<https://devfeed.tech/topics/full-stack-development.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [API](<https://devfeed.tech/topics/api.md>), [Development](<https://devfeed.tech/topics/development.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Cross-origin resource sharing (CORS)](<https://devfeed.tech/topics/cors.md>), [in-memory database](<https://devfeed.tech/topics/in-memory-database.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [HTTP](<https://devfeed.tech/topics/http.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [backend](<https://devfeed.tech/tags/backend.md>), [blogs](<https://devfeed.tech/tags/blogs.md>), [cors](<https://devfeed.tech/tags/cors.md>), [development](<https://devfeed.tech/tags/development.md>), [frontend](<https://devfeed.tech/tags/frontend.md>), [full-stack](<https://devfeed.tech/tags/full-stack.md>), [full-stack-development](<https://devfeed.tech/tags/full-stack-development.md>), [go](<https://devfeed.tech/tags/go.md>), [http](<https://devfeed.tech/tags/http.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [json](<https://devfeed.tech/tags/json.md>), [side-project](<https://devfeed.tech/tags/side-project.md>)

### AI overview

The final part of a full-stack development series explains the implementation of a to-do list project. It covers REST API design, authentication and CORS middleware, Go backend structure and routing, and an in-memory database serialized as JSON.

### Source excerpt

To conclude my series on full-stack development, this part will look at the implementation, design choices, what worked well and what didn't. This builds on the to-do list project proposed in part 1 and the tech stack described in part 2.

## Increase Test Fidelity By Avoiding Mocks

DevFeed: [Increase Test Fidelity By Avoiding Mocks](<https://devfeed.tech/articles/increase-test-fidelity-by-avoiding-mocks-23850.md>)

Original publisher: [Read original article](<http://testing.googleblog.com/2024/02/increase-test-fidelity-by-avoiding-mocks.html>)

Author: Google Testing Bloggers (noreply@blogger.com)

Published: 2024-02-27T18:43:00Z

Content type: tutorial

Language: en

Sources: [Google Testing Blog](<https://devfeed.tech/sources/google-testing-blog.md>)

Topics: [Testing](<https://devfeed.tech/topics/testing.md>), [Mocking](<https://devfeed.tech/topics/mocking.md>), [Software Engineering](<https://devfeed.tech/topics/software-engineering.md>), [Database](<https://devfeed.tech/topics/database.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [andrew-trenk](<https://devfeed.tech/tags/andrew-trenk.md>), [article](<https://devfeed.tech/tags/article.md>), [bugs](<https://devfeed.tech/tags/bugs.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [dillon-bly](<https://devfeed.tech/tags/dillon-bly.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [software](<https://devfeed.tech/tags/software.md>), [software-engineering](<https://devfeed.tech/tags/software-engineering.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tests](<https://devfeed.tech/tags/tests.md>), [tott](<https://devfeed.tech/tags/tott.md>), [unit-tests](<https://devfeed.tech/tags/unit-tests.md>)

### AI overview

This Google Testing on the Toilet article explains that test fidelity is higher when tests use the real dependency implementation. If that is impractical, it recommends using a fake, such as an in-memory database, and using a mock only when neither a real implementation nor a fake is suitable. Mocks can reduce fidelity because their inline behavior may diverge from the real dependency.

### Source excerpt

This article was adapted from a Google Testing on the Toilet (TotT) episode. You can download a printer-friendly version of this TotT episode and post it in your office. By Andrew Trenk and Dillon Bly Replacing your code's dependencies with mocks can make unit tests easier to write and faster to run. However, among other problems, using mocks can lead to tests that are less effective at catching bugs. The fidelity of a test refers to how closely the behavior of the test resembles the behavior of the production code. A test with higher fidelity gives you higher confidence that your code will work properly. When specifying a dependency to use in a test, prefer the highest-fidelity option. Learn more in the Test Doubles chapter of the Software Engineering at Google book. Try to use the real implementation. This provides the most fidelity, because the code in the implementation will be executed in the test. There may be tradeoffs when using a real implementation: they can be slow, non-deterministic, or difficult to instantiate (e.g., it connects to an external server). Use your judgment to decide if a real implementation is the right choice. Use a fake if you can't use the real implementation. A fake is a lightweight implementation of an API that behaves similarly to the real implementation, e.g., an in-memory database. A fake ensures a test has high fidelity, but takes effort to write and maintain; e.g., it needs its own tests to ensure that it conforms to the behavior of the real implementation. Typically, the owner of the real implementation creates and maintains the fake. Use a mock if you can't use the real implementation or a fake. A mock reduces fidelity, since it doesn't execute any of the actual implementation of a dependency; its behavior is specified inline in a test (a technique known as stubbing), so it may diverge from the behavior of the real implementation. Mocks provide a basic level of confidence that your code works properly, and can be especially use

## Ultimate Go: Advanced Engineering Episode 17

DevFeed: [Ultimate Go: Advanced Engineering Episode 17](<https://devfeed.tech/articles/ultimate-go-advanced-engineering-episode-17-22206.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2023/01/ultimate-go-advanced-engineering-episode-17.html>)

Published: 2023-01-19T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Blockchain](<https://devfeed.tech/topics/blockchain.md>), [Transactions](<https://devfeed.tech/topics/transactions.md>), [Database](<https://devfeed.tech/topics/database.md>)

Tags: [account](<https://devfeed.tech/tags/account.md>), [account-balance](<https://devfeed.tech/tags/account-balance.md>), [accounting](<https://devfeed.tech/tags/accounting.md>), [bitcoin](<https://devfeed.tech/tags/bitcoin.md>), [blockchain](<https://devfeed.tech/tags/blockchain.md>), [database](<https://devfeed.tech/tags/database.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [go-blockchain](<https://devfeed.tech/tags/go-blockchain.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [memory-pool](<https://devfeed.tech/tags/memory-pool.md>), [transactions](<https://devfeed.tech/tags/transactions.md>)

### AI overview

This video tutorial continues a blockchain engineering series by implementing account-balance tracking. It designs an in-memory accounting database and uses a memory pool to store account balances, following earlier transaction-verification work.

### Source excerpt

Introduction In episode 16, Bill implemented additional means of verification for his blockchain's transactions. The first update he made was to verify if a transaction is destined for his blockchain by reading the first byte of the signature. The next one Bill made was to recalculate the public address from a signature and compare it with the from field of the transaction to verify if the request is valid. While building this, Bill demonstrates how a user's private key transforms into their public address.

## Using H2 as a Test Database Product with jOOQ

DevFeed: [Using H2 as a Test Database Product with jOOQ](<https://devfeed.tech/articles/using-h2-as-a-test-database-product-with-jooq-28969.md>)

Original publisher: [Read original article](<https://blog.jooq.org/using-h2-as-a-test-database-product/>)

Author: lukaseder

Published: 2022-08-19T07:25:43Z

Content type: tutorial

Language: en

Sources: [jOOQ](<https://devfeed.tech/sources/jooq.md>)

Topics: [in-memory database](<https://devfeed.tech/topics/in-memory-database.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Java](<https://devfeed.tech/topics/java.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [sql-server](<https://devfeed.tech/topics/sql-server.md>)

Tags: [compatibility-mode](<https://devfeed.tech/tags/compatibility-mode.md>), [database](<https://devfeed.tech/tags/database.md>), [h2](<https://devfeed.tech/tags/h2.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [integration-testing](<https://devfeed.tech/tags/integration-testing.md>), [java](<https://devfeed.tech/tags/java.md>), [jooq](<https://devfeed.tech/tags/jooq.md>), [jooq-in-use](<https://devfeed.tech/tags/jooq-in-use.md>), [sql](<https://devfeed.tech/tags/sql.md>), [sql-server](<https://devfeed.tech/tags/sql-server.md>), [testcontainers](<https://devfeed.tech/tags/testcontainers.md>), [testing](<https://devfeed.tech/tags/testing.md>), [vendor-agnosticity](<https://devfeed.tech/tags/vendor-agnosticity.md>)

### AI overview

This article explains the trade-offs of using H2 as a test database for Java applications with jOOQ. It shows why SQL that works on H2 may require syntax changes on SQL Server, describes H2 compatibility modes, and notes that jOOQ generates SQL for H2's native dialect rather than its compatibility modes.

### Source excerpt

The H2 database is an immensely popular in-memory database product mostly used by Java developers for testing. If you check out the DB-Engines ranking, it ranks 50th, which is quite impressive, as this rank outperforms products like: CockroachDB Ignite Single Store (previously MemSQL) Interbase (which was forked as Firebird) Ingres (which is a predecessor to ... Continue reading Using H2 as a Test Database Product with jOOQ ->

## How to use an in-memory database for testing on Ktor

DevFeed: [How to use an in-memory database for testing on Ktor](<https://devfeed.tech/articles/how-to-use-an-in-memory-database-for-testing-on-ktor-25560.md>)

Original publisher: [Read original article](<https://www.marcogomiero.com/posts/2021/ktor-in-memory-db-testing/>)

Author: Marco Gomiero

Published: 2021-10-04T00:00:00Z

Content type: tutorial

Language: en

Sources: [Posts on Marco Gomiero](<https://devfeed.tech/sources/posts-on-marco-gomiero.md>)

Topics: [Ktor](<https://devfeed.tech/topics/ktor.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [Databases](<https://devfeed.tech/topics/databases.md>), [backend-development](<https://devfeed.tech/topics/backend-development.md>)

Tags: [database](<https://devfeed.tech/tags/database.md>), [in-memory-database](<https://devfeed.tech/tags/in-memory-database.md>), [jetbrains](<https://devfeed.tech/tags/jetbrains.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [mysql](<https://devfeed.tech/tags/mysql.md>), [orm](<https://devfeed.tech/tags/orm.md>), [testing](<https://devfeed.tech/tags/testing.md>)

### AI overview

This tutorial explains how to use an H2 in-memory database for automated testing in a Ktor backend project that uses MySQL in production. It discusses clearing test data, using Docker as an alternative, and configuring the Exposed ORM.

### Source excerpt

SERIES: Building a backend with Ktor Part 1: Structuring a Ktor project Part 2: How to persist Ktor logs Part 3: How to use an in-memory database for testing on Ktor Part 4: How to handle database migrations with Liquibase on Ktor Part 5 Generate API documentation from Swagger on Ktor Part 6: How to schedule jobs with Quartz on Ktor Part 7: Moving from mobile to backend development with Ktor Usually, in a backend project, there are different instances of the same database: one for production (or more than one, it depends on the architecture), one for staging, and a local one that runs in the development machine.