This message was deleted.
# plugin-development
s
This message was deleted.
a
Have you thought of a kafka stream for it?
although I need to think about how that would work with tasks.
c
What type and volume of data is this?
t
I wouldn't call it "big data". Hundreds of megabytes, maybe a few gigabytes
right now this is very much just a thought experiment. I haven't made any steps in this direction
c
What does the data represent?
t
this is for my dependency analysis plugin (on a very large project, hence the large amount of data). Metadata about the subprojects under analysis, their dependencies, and various inferred relationships
f
Sqlite could be nice if you have a remote build cache through which you can share the database. It's just a file and as such perfectly compatible with Gradle's caching. Of course, care must be taken who's allowed to update it, but that problem you have with any solution.
j
Have you thought about just using a more compact binary format than Json for the files (like protobuf, cbor or similar)? I think that what I would try first (and see if that sufficient). Gradle is so file oriented, that I think this is the better direction. Both for implementing things correctly that they work with input/ouput/caching and also for a user (like me) to understand what the plugin is doing.
c
I agree that files are outputs and everyone understands what the task does, so if it matters, for users it's better if you use a file, which doesn't need to be a json, it can be sqlitle or binary.
🙌 1
it may be useful also if you want to create those files on each module (so they can be up-to-date) and merge it in the rootProject (or wherever you need to)
t
don't forget one of my criteria, which was:
which would also permit queries outside of the context of gradle
🙂 Maybe one idea is to continue to use human-readable json and also serialize the data into a database. I kind of just want a better way to query the data than writing custom little one-off gradle tasks and opening a debugger 😄
f
If it's a requirement and not a nice to have then a real DB is the way to go. I mean, you don't need the caching in this case, because the database keeps track of things. This should be fairly easy to implement with a build service. Just be sure to commit stuff only from the right places, or the DB is going to become an inconsistent mess. 😅
p
you could also continue using files locally and provide a way to publish them to a remote thing
t
good thoughts, thank you!