Comments (6)
As we talked about, lets try to go the nosql leveldb way to better understand leveldb and to persist said metadata.
from hyperamp.
Some reading:
- https://www.youtube.com/watch?v=Ssct_O1LET8
- https://github.com/cyberwizardinstitute/workshops/blob/master/leveldb.markdown
- https://github.com/google/leveldb
- http://leveldb.org
- https://github.com/Level/levelup
- https://github.com/substack/leveldb-handbook
from hyperamp.
rethinking how we deal with reading, storing, retrieving metadata a bit.
what do you think of
- scanning the client-specified media library folder in the main process
- streaming those results to something like https://github.com/blahah/yunodb
- sending limited metadata to the client via IPC (after initial scan is complete)
- send searches to the db, return results to renderer
- take advantage of paged results for default and filtered lists
- use a smarter datagrid implementation to deal with paging/large amounts of rows
that way we limit any possible slowdown on the renderer and offload heavier work to the main process, we start interacting with leveldb a bit more, and we have a persistent document store
from hyperamp.
Sorry I missed your feedback until now. Like the general idea a lot. I don't know anything about yunodb so I'm going to read about it. My thinking was that we would use something like https://github.com/sethvincent/level-model and stream processing to achieve paging and stuff, but I'm open to things that already do this. Part of me things we should really be using SQLite for indexing, but I'm hoping that using levels will eventually come in handy for replicating library info with hyperlog, or something like it (booo conflicts).
I imagine in order to have a robust grid we will also need something like data-grid.
I think the best approach is to just take a stab or two at the problem and see where we get.
from hyperamp.
I'm thinking we should preserve the streaming interfaces (automatic paging) with something like this:
https://github.com/pfrazee/pauls-electron-rpc
Its basically https://github.com/maxogden/websocket-stream + https://github.com/substack/multiplex-rpc but for IPC instead of websockets.
But yes, having a single level/db instance on the main process, and then have the player request streams of data / chunks of arrays of objects to render.
from hyperamp.
What a yack shave.
I just persisted on save using electron-config, despite writing 4 leveldb modules. I say this is closed by
#114 for now.
Open new issues when we start tackling larger music library persistence.
from hyperamp.
Related Issues (20)
- Image fingerprinting HOT 8
- NaN:NaN HOT 2
- Add "Always On Top" menu option HOT 2
- Investigate write-file-atomic
- Add latest release date to "About Hyperamp" HOT 7
- Update XVFB settings HOT 1
- An in-range update of electron is breaking the build 🚨 HOT 2
- An in-range update of electron is breaking the build 🚨 HOT 4
- An in-range update of music-metadata is breaking the build 🚨 HOT 3
- An in-range update of is-buffer is breaking the build 🚨 HOT 1
- Convert to GH actions HOT 1
- Odd search results
- Support star ratings in POPM ID3 tag HOT 2
- An in-range update of tape is breaking the build 🚨 HOT 2
- An in-range update of mousetrap is breaking the build 🚨 HOT 1
- An in-range update of rimraf is breaking the build 🚨 HOT 2
- An in-range update of electron-store is breaking the build 🚨 HOT 1
- An in-range update of tape is breaking the build 🚨 HOT 1
- An in-range update of bl is breaking the build 🚨 HOT 1
- An in-range update of bundle-collapser is breaking the build 🚨 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hyperamp.