đź§© BigDB
Extension for MIT AI2BigDB - 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! ![]()
Benefits of BigDB vs. TinyDB in App Inventor 
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  | 
Supports multiple tables for organized data (SetTable). | 
Single namespace only. | Better data organization and scalability.  | 
| TTL (Time-to-Live)  | 
Set expiration times (Expire, PurgeExpired). | 
No TTL support. | Automates data lifecycle management.  | 
| Metadata Support  | 
Store and query metadata (SetMetadata, FindByMetadata). | 
No metadata support. | Enhances data searchability and context.  | 
| Encryption  | 
Database encryption (SetPassword, IsEncrypted). | 
No encryption. | Protects sensitive data.  | 
| Asynchronous Operations  | 
Async data retrieval (Get, Keys). | 
Synchronous operations. | Improves app responsiveness.  | 
| Bulk Operations  | 
Bulk store/delete (BulkStore, BulkDelete). | 
Individual operations only. | Speeds up large dataset management.  | 
| Data Import/Export  | 
CSV and JSON support (ExportCSV, ImportJSON). | 
No built-in import/export. | Simplifies data portability.  | 
| Change Notifications  | 
Watch key changes (Watch, Unwatch). | 
No notifications. | Enables reactive programming.  | 
| Advanced Querying  | 
Query by metadata, JSON records (FindByMetadata, GetRecord). | 
Basic key-value retrieval. | Supports complex data operations.  | 
| Database Management  | 
Check size, list tables (DBSize, ListTables). | 
No such utilities. | Improves storage monitoring.  | 
| Indexing  | 
Automatic key indexing for faster lookups. | No indexing. | Enhances query performance.  | 
| Error Handling  | 
Robust error reporting (ErrorOccurred). | 
Limited error feedback. | Simplifies debugging and reliability.  | 
 Specifications
 Package: com.bigdb
 Size: 33.66 KB
 Version: 1.0
 Minimum API Level: 7
License: Free Extension License
 Updated On: 2025-06-12T15:30:00Z
 Built & documented using: FAST-CLI v3.4.0
Blocks

Events:
BigDB has total 7 events.
1. Got
Fires when a value is retrieved
| Parameter | Type | 
|---|---|
| queryId | text | 
| value | text | 
2. KeyList
Fires when a key list is returned
| Parameter | Type | 
|---|---|
| queryId | text | 
| keys | any | 
3. DataChanged
Fires when data changes in the current table
4. ErrorOccurred
Fires when an error occurs
| Parameter | Type | 
|---|---|
| message | text | 
5. RandomKeyRetrieved
Fires when a random key is retrieved
| Parameter | Type | 
|---|---|
| queryId | text | 
| key | text | 
6. ExpiredKeysRetrieved
Fires when expired keys are retrieved
| Parameter | Type | 
|---|---|
| queryId | text | 
| keys | any | 
7. TableSizeRetrieved
Fires when the table size is retrieved
| Parameter | Type | 
|---|---|
| queryId | text | 
| size | number | 
Methods:
BigDB has total 39 methods.
1. EnableAutoCleanup
Enable or disable auto-cleanup of expired records at the specified interval (in seconds). Set interval to 0 to disable.
| Parameter | Type | 
|---|---|
| intervalSeconds | number | 
2. PurgeExpired
Purge expired keys from the current table
3. SetPassword
Set database encryption password (PRAGMA key)
| Parameter | Type | 
|---|---|
| pwd | text | 
4. RemovePassword
Remove encryption (PRAGMA rekey to empty)
5. IsEncrypted
Check if database is encrypted
- Return type: 
boolean 
6. Store
Store a value for a key with optional TTL and metadata
| Parameter | Type | 
|---|---|
| key | text | 
| value | text | 
| useTTL | boolean | 
| ttlSeconds | number | 
| metadata | text | 
7. Get
Get the value for a key asynchronously
| Parameter | Type | 
|---|---|
| key | text | 
| queryId | text | 
8. Delete
Delete a key
| Parameter | Type | 
|---|---|
| key | text | 
9. Clear
Clear all data in the current table
10. RenameKey
Rename a key
| Parameter | Type | 
|---|---|
| oldKey | text | 
| newKey | text | 
11. BulkStore
Store multiple key-value pairs
| Parameter | Type | 
|---|---|
| keys | list | 
| values | list | 
12. BulkDelete
Delete multiple keys
| Parameter | Type | 
|---|---|
| keys | list | 
13. Keys
List all keys in the current table asynchronously
| Parameter | Type | 
|---|---|
| queryId | text | 
14. Exists
Check if a key exists
- Return type: 
boolean 
| Parameter | Type | 
|---|---|
| key | text | 
15. GetRecord
Get full record as JSON asynchronously
| Parameter | Type | 
|---|---|
| key | text | 
| queryId | text | 
16. FindByMetadata
Find keys by metadata substring asynchronously
| Parameter | Type | 
|---|---|
| query | text | 
| queryId | text | 
17. Expire
Set expiry time in seconds for a key
| Parameter | Type | 
|---|---|
| key | text | 
| seconds | number | 
18. SetMetadata
Set metadata for a key
| Parameter | Type | 
|---|---|
| key | text | 
| metadata | text | 
19. GetMetadata
Get metadata for a key
- Return type: 
text 
| Parameter | Type | 
|---|---|
| key | text | 
20. GetTTL
Get remaining TTL in seconds for a key (0 if none or expired)
- Return type: 
number 
| Parameter | Type | 
|---|---|
| key | text | 
21. GetRandomKey
Get a random key from the current table asynchronously
| Parameter | Type | 
|---|---|
| queryId | text | 
22. GetExpiredKeys
Get all expired keys from the current table asynchronously
| Parameter | Type | 
|---|---|
| queryId | text | 
23. SetBulkExpiry
Set the same TTL for multiple keys
| Parameter | Type | 
|---|---|
| keys | list | 
| seconds | number | 
24. CopyTable
Copy the current table to a new table
| Parameter | Type | 
|---|---|
| targetTable | text | 
25. MergeTables
Merge records from source table into current table
| Parameter | Type | 
|---|---|
| sourceTable | text | 
| conflictStrategy | text | 
26. GetTableSize
Get an estimated size of the current table asynchronously
| Parameter | Type | 
|---|---|
| queryId | text | 
27. RenameTable
Rename the current table
| Parameter | Type | 
|---|---|
| newName | text | 
28. DeleteTable
Delete a table
| Parameter | Type | 
|---|---|
| tableName | text | 
29. CheckTableExists
Check if a table exists
- Return type: 
boolean 
| Parameter | Type | 
|---|---|
| tableName | text | 
30. DeleteDatabase
Delete all tables in the database
31. ExportCSV
Export current table as CSV to the specified file path. If filePath is empty, uses the app's external files directory.
| Parameter | Type | 
|---|---|
| filePath | text | 
32. ImportCSV
Import data into current table from CSV
| Parameter | Type | 
|---|---|
| filename | text | 
33. ExportJSON
Export current table as JSON string
- Return type: 
text 
34. ImportJSON
Import data into current table from JSON
| Parameter | Type | 
|---|---|
| json | text | 
35. Count
Get total record count in current table
- Return type: 
number 
36. DBSize
Get database file size in bytes
- Return type: 
number 
37. ListTables
List all tables in database
- Return type: 
any 
38. Watch
Watch changes to a key in the current table
| Parameter | Type | 
|---|---|
| key | text | 
| queryId | text | 
39. Unwatch
Stop watching changes to a key
| Parameter | Type | 
|---|---|
| key | text | 
| queryId | text | 
Setter:
BigDB has total 1 setter property.
1. SetTable
Set the current table to operate on
- Input type: 
text 
FAQ
How to set TTL for a key 
 (With TTL as true and false both)
Download the extension! 
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 ![]()
Download the latest version from GitHub
All the versions of the extension are available in the Releases tab in the BigDB repository!
Please 
 the Repository to show your support
Please share any feedback below! I will be happy to answer any questions. My other extensions are available here.
Regards
Sarthak Gupta



