Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9216cd1638 |
62
README.md
62
README.md
@@ -174,10 +174,60 @@ The BinaryTable uses a custom binary format optimized for random access:
|
|||||||
- **Concurrent Access**: Single-threaded access only
|
- **Concurrent Access**: Single-threaded access only
|
||||||
- **Type System**: Limited compared to JSON (no nested objects, mixed arrays)
|
- **Type System**: Limited compared to JSON (no nested objects, mixed arrays)
|
||||||
|
|
||||||
## Future Roadmap
|
# SweepStore Roadmap
|
||||||
|
|
||||||
- Full JSON parity with nested objects and mixed-type arrays
|
## v1.0.0 (Current)
|
||||||
- Compression support for large data blocks
|
- ✅ Key-value storage with hash-based indexing
|
||||||
- Checksums and data integrity validation
|
- ✅ Uniform arrays with random access
|
||||||
- Multi-threaded access with file locking
|
- ✅ Automatic memory management via free list
|
||||||
- Query system for complex data retrieval
|
- ✅ Single file format (.sws)
|
||||||
|
|
||||||
|
## v2.0.0 (Planned)
|
||||||
|
|
||||||
|
### Core Changes
|
||||||
|
- **Nested objects** - Store objects within objects for hierarchical data
|
||||||
|
- **Key enumeration** - Query and list all keys without knowing them upfront
|
||||||
|
- **Object-based architecture** - Each object has its own address table and key list
|
||||||
|
|
||||||
|
### File Format Changes
|
||||||
|
```
|
||||||
|
v1: Global address table → All keys at root level
|
||||||
|
v2: Root object → Each object manages its own keys
|
||||||
|
```
|
||||||
|
|
||||||
|
### New API
|
||||||
|
```dart
|
||||||
|
// Nested objects
|
||||||
|
table["player"] = {};
|
||||||
|
table["player"]["name"] = "Alice";
|
||||||
|
table["player"]["inventory"] = {};
|
||||||
|
|
||||||
|
// Key discovery
|
||||||
|
List<String> keys = table.keys();
|
||||||
|
bool exists = table.containsKey("player");
|
||||||
|
|
||||||
|
// Object operations
|
||||||
|
BT_Object player = table["player"];
|
||||||
|
for (String key in player.keys()) {
|
||||||
|
print("$key: ${player[key]}");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Implementation Strategy
|
||||||
|
- Introduce `BT_Object` type with embedded address table + key list
|
||||||
|
- `BinaryTable` becomes wrapper around root object
|
||||||
|
- Maintain global free list (not per-object)
|
||||||
|
- Address table entries remain absolute pointers
|
||||||
|
- Key list stored alongside each object's address table
|
||||||
|
|
||||||
|
### Breaking Changes
|
||||||
|
- File format incompatible with v1.0.0
|
||||||
|
- API remains largely the same (only additions)
|
||||||
|
- Migration tool needed for v1 → v2 files
|
||||||
|
|
||||||
|
## Future Considerations
|
||||||
|
- Hash collision resolution
|
||||||
|
- Checksums for data integrity
|
||||||
|
- Optimized allocation strategies
|
||||||
|
- Incremental array resizing
|
||||||
|
- Compression options
|
||||||
Reference in New Issue
Block a user