edit: Although to be fair that blog post is ancient and covers Cassandra 2.0, now no longer supported. Counters were rewritten in Cassandra 2.1.
184 karma · joined January 31, 2009
http://www.hackernewsers.com/users/iamaleksey.html
edit: Although to be fair that blog post is ancient and covers Cassandra 2.0, now no longer supported. Counters were rewritten in Cassandra 2.1.
You can do CREATE TABLE schemaless (id blob, name blob, value blob, PRIMARY KEY (id, name)) WITH COMPACT STORAGE; and have a 'schemaless' table, essenitally, just as with Thrift.
This is not a workaround either - this is first-class supported, just as you can read/write from/to 'schemaless' thrift columnfamilies using CQL.
This is getting old, and is just plain untrue. Reads are more expensive than the extremely cheap writes, but they really aren't expensive.
> Atomicity at the row level only
Partition level, really, in modern terminology (apologies if that's what you meant).
What marshray suggested would look like this:
create table bucket.users (name text, field text, value text, primary key ((name, field))); - with a composite partition key. Then you'd have two separate single-cell partitions "jbellis:email" : "jbellis@example.com" and "jbellis:phone" : "555-5555". You don't want to do that in either Riak or Cassandra.
Would be even better with RSS/Atom feed.
It's a perfect fit.
And there is a c/++ library for almost everything.
ets:new(global_state, [set, public, named_table])
Now we've got a named table that any process may read or write to. It is possible.And AMQP was chosen for the transport layer because it handles persistent messages, transactions, all the routing, buffers messages, etc., etc. I'd have to implement all of these myself, had I chosen thrift.
This is how I ended up with RabbitMQ and ASN.1.
But none of these is needed for websockets to work.
Erlang:
surf(Channels) ->
lists:foreach(fun process/1, Channels).
process(#channel{genre = "football"} = Channel) ->
record(Channel);
process(#channel{genre = "comedy", repeat = false} = Channel) ->
record(Channel);
process(#channel{genre = "crime", show_title = "Cops"}) ->
skip;
process(#channel{genre = "crime"} = Channel) ->
record(Channel);
process(_) ->
skip.
Full gist: http://gist.github.com/250304Probably because writing erlang.org in PHP actually makes more sense to me than writing it in Erlang (:
Erlang Web is pure Erlang, it doesn't have a single line of PHP. [http://www.erlang-web.org/]