Hacker Newsnew | past | comments | ask | show | jobs | submit | tobilg's commentslogin

I don't get it, if it's running on the same (mentioning "local") machine, why does it even need the S3 API? Could just be plain IO on the local drive(s)

The app was already built against the S3 API when it used cloud storage. Keeping that interface means the code doesn't change - you just point it at a local S3-compatible gateway instead of AWS/DO. Makes it trivial to switch back or move providers if needed.

(Author here) There are multiple web servers for redundancy (3 currently), and each needs access to all objects.

with average object size of 8.5kB I'd honestly consider storing it as blobs in cloud DB, with maybe some small per-server cache in front

If the app was written using the S3 API, it would be much faster/cheaper to migrate to a local system the provides the same API. Switching to local IO would mean (probably) rewriting a lot of code.

Surely "read object" and "write object" are not hard to migrate to local file system. You can also use Apache OpenDAL which provide the same interface to both.

Yeah, unless you have the raw S3 API throughout your codebase you should be able to write a couple dozen lines of code (maximum) to introduce a shim that's trivial to replace with local file access. In fact, I've done this in most projects that work with S3 or similar APIs so I can test them locally without needing real S3!

Compatibility with existing code, middleware and so on.

seperate machine I think given the quoted point at the end:

> The costs have increased: renting an additional dedicated server costs more than storing ~100GB at a managed object storage service. But the improved performance and reliability are worth it.


The S3 API doesn't work like normal filesystem APIs.

Part of it is that it follows the object storage model, and part of it is just to lock people into AWS once they start working with it.


What kind of vendor lock-in do you even talk about. Their API is public knowledge, AWS publishes the spec, there are multiple open source reference client implementations available on GitHub, there are multiple alternatives supporting the protocol, you can find writings from AWS people as high in hierarchy as Werner Vogels about internals. Maybe you could say that some s3 features with no alternative implementation in alternative products are a lock-in. I would consider it a „competitive advantage”. YMMV.

Apart from all these other products that implement s3? MinIO, Ceph (RGW), Garage, SeaweedFS, Zenko CloudServer, OpenIO, LakeFS, Versity, Storj, Riak CS, JuiceFS, Rustfs, s3proxy.

Add Tigris to the list as well please.

We maintain a page that shows our compatibility with S3 API. It's at https://www.tigrisdata.com/docs/api/s3/. The test runner is open source at https://github.com/tigrisdata-community/s3-api-compat-tests


Riak CS been dead for over a decade which makes me question the rest. Some of these also do not have the same behaviors when it comes to paths (MinIO is one of those IIRC).

Also, none of them implement full S3 API and features.


There's a difference between S3 API spec and what Amazon does with S3 - for isntance, the new CAS capabilities with Amazon are not part of the spec.

Ceph certainly implements the full API spec, though it may lag behind some changes. It's mostly a question of engineering time available to the projects to keep up with changes.


> There's a difference between S3 API spec and what Amazon does with S3 - for isntance, the new CAS capabilities with Amazon are not part of the spec.

Sure, but those are S3 APIs and features that provided by AWS. We not talking about S3 spec, we're talking about s3 product.


You’re wrong. “Implementing the S3 API” means the spec, not an Amazon product.

We're talking about using AWS S3 and using something that implements S3 spec. Really not that hard to understand.

When customer wants to switch away from AWS S3, customer cares about AWS S3 feature coverage and not the spec.


Spec and features are intertwined. Customers who switch away from AWS S3 still want to use the same SDKs, libraries, etc that support S3 API. They don't want to rewrite their applications to use a new API. So then is it feature coverage or spec coverage?

It's both? Customer doesn't care if spec is 100% covered if feature that they are using in AWS S3 isn't supported.

Also, who is rewriting their application to change interaction with an object storage? People that directly use some S3 sdk all around the app should read a book on software engineering or at least a blog post.


Wrong again. Not only have I worked on DigitalOcean’s S3 implementation but I currently work on an open source product that targets S3 spec and can be used with any cloud provider and any other spec-compliant drop-in, like Garage.

What does RadosGW miss?

I'm 100% aware of how S3 works. I was questioning why the S3 API is needed when the service is using local storage.

Sometimes API compatibility is an important detail.

I've worked at a few places where single-node K8s "clusters" were frequently used just because they wanted the same API everywhere.


The API has sort of become a standard. There are many providers providing S3 API-compatible storage.

> part of it is just to lock people into AWS once they start working with it.

This is some next-level conspiracy theory stuff. What exactly would the alternative have been in 2006? S3 is one of the most commonly implemented object storage APIs around, so if the goal is lock-in, they're really bad at it.


> What exactly would the alternative have been in 2006?

Well, WebDAV (Document Authoring and Versioning) had been around for 8 years when AWS decided they needed a custom API. And what service provider wasn't trying to lock you into a service by providing a custom API (especially pre-GPT) when one existed already? Assuming they made the choice for a business benefit doesn't require anything close to a conspiracy theory.

And it worked as a moat until other companies and open source projects started cloning the API. See also: Microsoft.


WebDAV is ass tho. I don't remember a single positive experience with anything using it.

And still need redundant backend giving it as API


When I was in school, we had a SkunkDAV setup that department secretaries were supposed to use to update websites... supporting that was no fun at all. I'm not sure why it was so painful (was 25 years ago) but it left a bad taste in my mouth.

WebDAV is kinda bad, and back then it was a big deal that corporate proxies wouldn't forward custom HTTP methods. You could barely trust PUT to work, let alone PROPFIND.

When S3 launched the core API could be described with 4 requests. It was (and still mostly is) super simple.

Saying they should have used WebDAV instead shows a lack of knowledge on your end rather than theirs.


So you don't need to refactor your code?

And when/if you decide to head back to a 3rd party it requires no refactoring again.

yeah, sure, those 5-10 different API calls would surely be a huge toll to refactor... I'd rather run an additional service to reimplement the S3 API mapping to my local drive /s

Or a simple SAN

Built with DuckDB-Wasm: SQL Terminal in the browser

https://terminal.sql-workbench.com


Impressive, congrats! I‘m building https://sql-workbench.com which is similar, but focussed on DuckDB WASM instead of SQLite… Love that you offer different databases.


Literally the first dozen search results if you google for "lakehouse" are about data lakehouses: https://www.google.com/search?q=lakehouse

This is a well-known term for everyone working with larger datasets...


> Literally the first dozen search results if you google for "lakehouse" are about data lakehouses:

Your results sound personalized. Data lakehouses are much smaller part of incognito results.


Try https://sql-workbench.com if you‘d like to do this directly in the browser, for free. Including Parquet and Arrow support as well.


Your tool has been awesome! Seeing what it can do inspired me to write a POC that connected to an enterprise IBM application that I used to implement: https://github.com/karbasia/tririga-data-workbench (also uses DuckDB and Perspective with some additional hacks to make it work with IBM's tool).


IMO that’s not really possible because of the size limits of Cloudflare Workers. Neither the WASM nor the Node version are small enough.

I‘m running it on AWS Lambda functions with some success.


Not sure why the comparisons were made with pretty outdated versions to be honest.

I‘m using a (older) v1.29.1 dev version with https://sql-workbench.com w/o any bigger issues.


But they got a custom CLI argument in the OSS product for it. And hosting/proxying it under the OSS domain ui.duckdb.org


Actually, the UI was built by MotherDuck…


Have a look at https://sql-workbench.com eventually. It runs DuckDB WASM in the browser, and with Perspective, which is used for data visualization, you can also visualize timeseries.

You can either drag & drop data, or use remote data sources via https


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: