[FREE] 🗄️BigDB - Advanced key-value storage with TTL, metadata, multi-table support, encryption, and more

🧩 BigDB

Extension for MIT AI2
BigDB - Advanced key-value storage with TTL, metadata, multi-table support, encryption, and more
My Other Extensions
Built by Sarthak Gupta

BigDB is a feature-rich, scalable, and secure alternative to TinyDB, designed for complex App Inventor projects. Its support for multi-table storage, TTL, encryption, asynchronous operations, and advanced querying makes it ideal for modern, data-intensive applications. Whether you’re building a secure app, managing large datasets, or needing real-time notifications, BigDB provides the tools to elevate your App Inventor projects! :glowing_star:

Benefits of BigDB vs. TinyDB in App Inventor :rocket:

BigDB (com.bigdb) is a powerful key-value storage extension for App Inventor, offering advanced features that surpass the capabilities of TinyDB. Below are the key advantages of using BigDB, with comparisons to TinyDB:

Feature BigDB TinyDB Benefit
Multi-Table Support :clipboard: Supports multiple tables for organized data (SetTable). Single namespace only. Better data organization and scalability. :glowing_star:
TTL (Time-to-Live) :alarm_clock: Set expiration times (Expire, PurgeExpired). No TTL support. Automates data lifecycle management. :hammer_and_wrench:
Metadata Support :memo: Store and query metadata (SetMetadata, FindByMetadata). No metadata support. Enhances data searchability and context. :magnifying_glass_tilted_left:
Encryption :locked: Database encryption (SetPassword, IsEncrypted). No encryption. Protects sensitive data. :shield:
Asynchronous Operations :high_voltage: Async data retrieval (Get, Keys). Synchronous operations. Improves app responsiveness. :rocket:
Bulk Operations :package: Bulk store/delete (BulkStore, BulkDelete). Individual operations only. Speeds up large dataset management. :chart_increasing:
Data Import/Export :outbox_tray::inbox_tray: CSV and JSON support (ExportCSV, ImportJSON). No built-in import/export. Simplifies data portability. :floppy_disk:
Change Notifications :bell: Watch key changes (Watch, Unwatch). No notifications. Enables reactive programming. :satellite_antenna:
Advanced Querying :magnifying_glass_tilted_right: Query by metadata, JSON records (FindByMetadata, GetRecord). Basic key-value retrieval. Supports complex data operations. :bar_chart:
Database Management :straight_ruler: Check size, list tables (DBSize, ListTables). No such utilities. Improves storage monitoring. :toolbox:
Indexing :gear: Automatic key indexing for faster lookups. No indexing. Enhances query performance. :racing_car:
Error Handling :stop_sign: Robust error reporting (ErrorOccurred). Limited error feedback. Simplifies debugging and reliability. :white_check_mark:

:memo: Specifications

  • :package: Package: com.bigdb
  • :floppy_disk: Size: 33.66 KB
  • :gear: Version: 1.0
  • :mobile_phone: Minimum API Level: 7
  • License: Free Extension License
  • :date: Updated On: 2025-05-25
  • :laptop: Built & documented using: FAST-CLI v3.4.0

Blocks

BulkDelete_Method
BulkStore_Method
Clear_Method
Count_Method
DataChanged_Event
DBSize_Method
Delete_Method
ErrorOccurred_Event
Exists_Method
Expire_Method

Events:

BigDB has total 4 events.

:yellow_heart: DataChanged

Fires when data changes in the current table

:yellow_heart: ErrorOccurred

Fires when an error occurs

Parameter Type
message text

:yellow_heart: Got

Fires when a value is retrieved

Parameter Type
queryId text
value text

:yellow_heart: KeyList

Fires when a key list is returned

Parameter Type
queryId text
keys any

Methods:

BigDB has total 28 methods.

:purple_heart: BulkDelete

Delete multiple keys
Parameters:

  • keys (list)

:purple_heart: BulkStore

Store multiple key-value pairs
Parameters:

  • keys (list)
  • values (list)

:purple_heart: Clear

Clear all data in the current table

:purple_heart: Count

Get total record count in current table

:purple_heart: DBSize

Get database file size in bytes

:purple_heart: Delete

Delete a key
Parameters:

  • key (text)

:purple_heart: Exists

Check if a key exists
Parameters:

  • key (text)

:purple_heart: Expire

Set expiry time in seconds for a key
Parameters:

  • key (text)
  • seconds (number)

:purple_heart: ExportCSV

Export current table as CSV to the specified file path
Parameters:

  • filePath (text)

:purple_heart: ExportJSON

Export current table as JSON string

:purple_heart: FindByMetadata

Find keys by metadata substring asynchronously
Parameters:

  • query (text)
  • queryId (text)

:purple_heart: Get

Get the value for a key asynchronously
Parameters:

  • key (text)
  • queryId (text)

:purple_heart: GetMetadata

Get metadata for a key
Parameters:

  • key (text)

:purple_heart: GetRecord

Get full record as JSON asynchronously
Parameters:

  • key (text)
  • queryId (text)

:purple_heart: GetTTL

Get remaining TTL in seconds for a key
Parameters:

  • key (text)

:purple_heart: ImportCSV

Import data into current table from CSV
Parameters:

  • filename (text)

:purple_heart: ImportJSON

Import data into current table from JSON
Parameters:

  • json (text)

:purple_heart: IsEncrypted

Check if database is encrypted

:purple_heart: Keys

List all keys in the current table asynchronously
Parameters:

  • queryId (text)

:purple_heart: ListTables

List all tables in database

:purple_heart: PurgeExpired

Purge expired keys from the current table

:purple_heart: RemovePassword

Remove encryption (PRAGMA rekey to empty)

:purple_heart: RenameKey

Rename a key
Parameters:

  • oldKey (text)
  • newKey (text)

:purple_heart: SetMetadata

Set metadata for a key
Parameters:

  • key (text)
  • metadata (text)

:purple_heart: SetPassword

Set database encryption password
Parameters:

  • pwd (text)

:purple_heart: Store

Store a value for a key with optional TTL and metadata
Parameters:

  • key (text)
  • value (text)
  • useTTL (boolean)
  • ttlSeconds (number)
  • metadata (text)

:purple_heart: Unwatch

Stop watching changes to a key
Parameters:

  • key (text)
  • queryId (text)

:purple_heart: Watch

Watch changes to a key in the current table
Parameters:

  • key (text)
  • queryId (text)

Setter:

BigDB has total 1 setter property.

:green_heart: SetTable

Set the current table to operate on
Input type: text


Download the extension! :tada:

This is a big project and I am making it available for free to the community. If you like my work please support here. It will make my day :blush:

BigDB V1 (1.0)- Released on 25/02/25

Please share any feedback below! I will be happy to answer any questions. My other extensions are available here.

https://github.com/techxsarthak/BigDB

Regards,
Sarthak Gupta

1 Like

Please follow the community guidelines.