Comments (19)
So this would allow for the deletion of an item, only after it has expired from the Spoke cache, ttl.
from hub.
yes, that will be perfect.
from hub.
@aashishpatel What is the use case you are solving for?
from hub.
@allumbra
Basically, our application will store indexes for the data separately from the where the data is actually stored(postgres and s3, respectively).
- The hub API will be used as a REST interface for s3
- because our IT team hosts and administers these hub instances, they are also already managing the encryption keys, access control etc. So we/they won't have anything more do.
The data and indexes for this data will initially be stored in the postgres RDS for quick retrieval. After the data is considered old, we will archive it to the hub permanently(trips old than 6 months, leaving the index behind). Now we can use postgres for searching and the hub for archived data retrieval. This should limit the amount/cost of data stored in the RDS.
from hub.
@aashishpatel what interface do you need to this feature?
Delete unique items?
Delete all items prior to a time?
from hub.
So far we only have a case for delete unique items.
from hub.
Doesn't this cause the next/previous references to be unreliable now? Previously, if you had an item URI you could rely on it always existing (up to the TTL). With delete, can't someone use delete to blow a hole in clients that are following next/previous links?
I thought a big part of the hub value was the immutability of written data. I can understand wanting a front end to S3, but Aashish's use case sounds more like a CRUD name/value interface.
from hub.
I agree with @chriskessel here. I don't think that DELETE belongs in the hub like this, as it fundamentally changes the nature of the time-oriented data stream. I think it's a mistake to use the hub as a REST API to S3 (um, s3 already has a REST interface!)
I would vote to have this feature removed...or at least this should be a nonstandard channel option that us disabled by default.
from hub.
I certainly understand the motivation to use Hub V2 since it hides/fixes the S3 write unreliability (black holes) with the spoke cache.
Perhaps keep channels which maintain immutability and add, uh, "buckets" that are basically S3 pass throughs? Use the same hub/spoke underlying technology to support 2 different storage needs?
from hub.
Plus one.
And provide group callbacks on bucket mutations.
On Wed, Mar 4, 2015 at 7:52 AM, Chris Kessel [email protected]
wrote:
I certainly understand the motivation to use Hub V2 since it hides/fixes
the S3 write unreliability (black holes) with the spoke cache.Perhaps keep channels which maintain immutability and add, uh, "buckets"
that are basically S3 pass throughs? Use the same hub/spoke underlying
technology to support 2 different storage needs?—
Reply to this email directly or view it on GitHub
#104 (comment).
[email protected]
Voice: 503.445.4233
Fax: 503.274.0939
from hub.
Jason, we're not advocating using the Hub as a REST API for S3 here ONLY. With this interface as a company we have radically removed barriers around access control and encryption and guarantee durability. The only thing we are doing differently is using the hub as permanent storage for trip information. This will reduce IT's burden, and our own in having to implement yet another S3 client at conducive and all that goes along with access control and encrypting S3 buckets. We've seen how slow we are at doing this sort of stuff so this was just our attempt at utilizing existing products and infrastructure.
The way I see it, the Hub is ACTUALLY conducive's own version of a CRUD S3 REST client that stored information in time series and provides easy access control, encryption and guarantee durability of this information. It was simply missing a delete feature.
Kessel is right in that it would change the behavior of group callbacks, but Crozier has a great complementing idea with group callbacks for bucket mutations.
from hub.
I don't think next/previous will be unreliable, they remain relative links.
I think there is a difference between items changing and the list changing. You still can not change the content of an item. The list already does mutate with the TTL.
We can easily make this a non-standard option at the channel level.
I'm struggling to understand a use case for group callback on deleted items. Would we send the url of the deleted item that can no longer be retrieved? What could a client do with that?
from hub.
I was responding to Kessel's suggestion for a separate K/V store, not
asking for callbacks on the deleted items. I don't think there should be a
delete option in the datahub.
On Wed, Mar 4, 2015 at 9:24 AM, moulliet [email protected] wrote:
I don't think next/previous will be unreliable, they remain relative links.
I think there is a difference between items changing and the list
changing. You still can not change the content of an item. The list already
does mutate with the TTL.We can easily make this a non-standard option at the channel level.
I'm struggling to understand a use case for group callback on deleted
items. Would we send the url of the deleted item that can no longer be
retrieved? What could a client do with that?—
Reply to this email directly or view it on GitHub
#104 (comment).
[email protected]
Voice: 503.445.4233
Fax: 503.274.0939
from hub.
Kessel is right in that it would change the behavior of group callbacks,
but Crozier has a great complementing idea with group callbacks for bucket
mutations.
To be clear, I was suggesting a callback feature for the K/V store that
Kessel suggested.
[email protected]
Voice: 503.445.4233
Fax: 503.274.0939
from hub.
By unreliable, I meant code now has to deal with items missing within a
sequence. With TTL, if you're walking backwards and hit an item that's gone
then you're done. You're guaranteed nothing else exists.
With delete being added, there can be holes. So if I'm walking backwards
and get a 404, it could be because that was deleted between my request and
when I followed the "previous" pointer.
Now on a 404 I'm not necessarily done, it could be a hole. So now I have to
refetch that item and look to see if it has a new previous link. Assuming
that item can be refetched and it wasn't also blown away as part of a
multi-item hole. And now my code has to do something like remember the last
X attempts and keep falling back to find item that hasn't been deleted so I
can get a valid "next" reference again.
There are similar issues if I use the new "previous 20" interface as well
in that I now have to handle the possibility of holes in the sequence as I
go walk them.
On Wed, Mar 4, 2015 at 9:30 AM, crozierm [email protected] wrote:
Kessel is right in that it would change the behavior of group callbacks,
but Crozier has a great complementing idea with group callbacks for
bucket
mutations.To be clear, I was suggesting a callback feature for the K/V store that
Kessel suggested.[email protected]
Voice: 503.445.4233
Fax: 503.274.0939—
Reply to this email directly or view it on GitHub
#104 (comment).
from hub.
@chriskessel - is this a problem if the channel you are using does not support deletes?
from hub.
If delete was disabled/enabled per channel, that'd probably be sufficient.
The place I could see this being problematic is if someone like data analytics was walking lots of different channels to crunch numbers for various analytic purposes. They'd have to write a client that was able to handle deleted items regardless since they might be walking channels with and without deletion ability.
Personally, I'd rather leave channels as is and have a new domain concept for channels with mutable streams (aka the "bucket"). Something like a "http://hub-v2/bucket" hierarchy.
from hub.
@aashishpatel's use case went away, and with the concerns raised, we will remove this feature
from hub.
Thanks for everyone's input.
@benFlightStats @moulliet I am amazed how fast you guys got this feature done :)
from hub.
Related Issues (20)
- Unpaused web hook still shows as paused HOT 2
- How can I start a webhook at the first item on a channel HOT 2
- Simultaneous channel creates can cause a 409
- Changing keepForever flag to true for existing channel causes ttlDays error
- AWS migrating from 8-character to 17-character resource IDs.
- Add ability to see recent access to channel HOT 3
- name field in webhook create causes a 500
- Unhandled promise rejections are deprecated HOT 2
- Emit DataDog events when appropriate
- Update js dependencies for integration tests HOT 2
- Add js linter to javascript folders
- refactor tests to delete the channels they create
- Metrics around S3Verifier activity
- Double-check HubS3Client works as intended.
- Events returning mangled data
- Expose S3 bucket name in the properties file
- Expose DynamoDB table name in the properties file
- Allow multiple S3 buckets in the config
- request to /previous returns a 303 HOT 1
- Can we get a webhook that replays data in reverse order?
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 hub.