# toast

Published articles for toast.

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

## When JSONB columns create schema, consistency, and performance problems

DevFeed: [When JSONB columns create schema, consistency, and performance problems](<https://devfeed.tech/articles/your-jsonb-column-became-the-schemaless-disaster-you-migrated-away-from-39598.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/46-jsonb-column-schemaless-disaster/>)

Author: hello@ankit-rana.com

Published: 2026-09-01T00:00:00Z

Content type: article

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [data](<https://devfeed.tech/topics/data.md>), [Structured-data](<https://devfeed.tech/topics/structured-data.md>), [JSON](<https://devfeed.tech/topics/json.md>)

Tags: [data-modelling](<https://devfeed.tech/tags/data-modelling.md>), [indexing](<https://devfeed.tech/tags/indexing.md>), [jsonb](<https://devfeed.tech/tags/jsonb.md>), [migration](<https://devfeed.tech/tags/migration.md>), [outage](<https://devfeed.tech/tags/outage.md>), [postgres](<https://devfeed.tech/tags/postgres.md>), [postgresql](<https://devfeed.tech/tags/postgresql.md>), [query](<https://devfeed.tech/tags/query.md>), [schema](<https://devfeed.tech/tags/schema.md>), [schema-design](<https://devfeed.tech/tags/schema-design.md>), [toast](<https://devfeed.tech/tags/toast.md>)

### AI overview

The article explains why using JSONB to avoid recurring migrations can create hidden schema and data-consistency problems. It discusses runtime failures from inconsistent keys and types, difficulty identifying dependencies across consumers, and the storage and update costs of large PostgreSQL JSONB documents.

### Source excerpt

JSONB is a good fit for genuinely open-ended data and a poor one for schema you did not want to commit to yet. Without a schema there is no NOT NULL, no type, no foreign key and no way to know which keys are load bearing, so every read becomes a parse and a cast that can fail at runtime. Large documents are stored out of line and compressed, which means reading one key can require fetching and decompressing the whole document, and updating one key rewrites all of it.

## Representing ViewModel events with StateFlow vs. SharedFlow vs. Channel

DevFeed: [Representing ViewModel events with StateFlow vs. SharedFlow vs. Channel](<https://devfeed.tech/articles/representing-viewmodel-events-with-stateflow-vs-sharedflow-vs-channel-39393.md>)

Original publisher: [Read original article](<https://kt.academy/article/viewmodel-stateflow-sharedflow-channel>)

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

Content type: tutorial

Language: en

Sources: [Kt. Academy](<https://devfeed.tech/sources/kt-academy.md>)

Topics: [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [Coroutines](<https://devfeed.tech/topics/coroutines.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [channel](<https://devfeed.tech/tags/channel.md>), [coroutines](<https://devfeed.tech/tags/coroutines.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [sharedflow](<https://devfeed.tech/tags/sharedflow.md>), [stateflow](<https://devfeed.tech/tags/stateflow.md>), [toast](<https://devfeed.tech/tags/toast.md>), [viewmodel](<https://devfeed.tech/tags/viewmodel.md>), [workshop-learning-programming](<https://devfeed.tech/tags/workshop-learning-programming.md>)

### AI overview

This article compares StateFlow, SharedFlow, and Channel for representing events in an Android ViewModel. It explains why StateFlow can lose events, notes SharedFlow's behavior when no UI observer is present, and discusses using an unlimited-capacity Channel as an event queue.

### Source excerpt

What is the best way to represent ViewModel events in Kotlin?