GithubHelp home page GithubHelp logo

Comments (12)

EdSchouten avatar EdSchouten commented on June 11, 2024

I think 'raw performance' was never the reason for us to deprecate the GCS/S3 storage backend. It was always the inability to do batch existence queries. This is something that needs to be fast for Buildbarn to work efficiently.

Please see #128 for more discussion in this area.

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

Thank you, that's a super helpful link, sorry for blindly reopening the conversation.

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

So I assume that a parallel call - one per object - over the gcp storage grpc list api was considered and discarded? I see you mention 'milliseconds' as the latency budget; how many objects are generally checked for in a single batch?

Thank you!

from bb-storage.

EdSchouten avatar EdSchouten commented on June 11, 2024

It may be as many as tens of thousands of objects. It's thus not realistic to spawn one goroutine per object.

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

So I've started messing around with the codebase, and the first thing I needed to do was to add a dependency on the Spanner API, after which I ran go mod tidy on the root of the repo. This errored out with:

go: finding module for package github.com/buildbarn/bb-storage/internal/mock
github.com/buildbarn/bb-storage/pkg/auth tested by
github.com/buildbarn/bb-storage/pkg/auth.test imports
github.com/buildbarn/bb-storage/internal/mock: no matching versions for query "latest"

Is that expected or am I doing it wrong?

Thanks!

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

The reason I think I have to run go mod tidy is because a call to go get cloud.google.com/go/spanner seems to give me a version skew in envoy between protoc-gen-validate and envoyproxy-go-control-plane. I'm wondering whether the right approach here would actually be to make a grpc api skin out of the BlobAccess API, and then I can implement the spanner backend without touching the BB codebase...?

from bb-storage.

moroten avatar moroten commented on June 11, 2024

Does go mod tidy -e work?

from bb-storage.

Jonpez2 avatar Jonpez2 commented on June 11, 2024

Seems to give exactly the same error. I think the problem is that that directory is quite weird in go space, and only defined in bazel space (right?)

from bb-storage.

moroten avatar moroten commented on June 11, 2024

Yes, the problem is the generated files not available in the repository. Does anyone know a good way to deal with it?

For me, go get -u ./... && go mod tidy -e has worked. That avoids the test packages and does not feel ideal.

from bb-storage.

EdSchouten avatar EdSchouten commented on June 11, 2024

I don't think I use go mod tidy at all. I generally just:

  • Remove go.sum
  • Remove all the dependencies in go.mod
  • Run go get -d ./...

And live with that.

from bb-storage.

EdSchouten avatar EdSchouten commented on June 11, 2024

Closing this, as I'm still not convinced this is feasible. GCS may well be faster, but because it still lacks facilities for doing bulk existence checks, it's still not suitable. If I'm wrong, I'd like to be persuaded otherwise in the form of a PR containing benchmark results.

from bb-storage.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.