But I do think there is nothing wrong with partitioner-per-namespace.
It should be straightfoward to implement (once we have real namespace
support to begin with) and it might be interesting for some apps to
have that ability.

-Jonathan

On Mon, Mar 30, 2009 at 1:26 PM, Jonathan Ellis <jbel...@gmail.com> wrote:
> The problem is you're using table to mean something that does not fit
> into Cassandra.
>
> Cassandra has ColumnFamilies but we do not need tables to group those
> the way relational databases group columns.
>
> To the degree that we need locality groups we have Super CFs.
>
> Cassandra already has (the beginnings of) something called a Table
> that is really what you are asking for in the first part, a namespace.
>
> Probably we should rename that to Schema or Namespace to avoid confusion.
>
> Have you read the BigTable paper yet?  A lot of it does not apply to
> Cassandra but the ColumnFamily/Memtable/SSTable descriptions are worth
> reading.  Sections 4, 5.3, 5.4 in particular.  From what I can tell
> Cassandra's implementation was heavily inspired by this.
>
> -Jonathan
>
> On Mon, Mar 30, 2009 at 1:16 PM, Neophytos Demetriou
> <neophy...@gmail.com> wrote:
>> I am not sure yet if this is a good idea or not but we might want to
>> consider partitions on a per-namespace basis, e.g. prefixing row keys
>> with predefined namespaces. I understand that this might not be the
>> preferred course of action for those of you using one cassandra cluster
>> per application (SLAs, etc) but nothing prevents you from running a
>> partitioner per cluster under this scheme.
>>
>> Here's how this could work:
>>
>> In storage-conf.xml:
>>
>> <partitioner ns="mynsp0">RandomPartitioner"</partitioner>
>> <partitioner ns="mynsp1">OrderPreservingPartitioner"</paritioner>
>>
>> The row key would then be of the form "mynamespace:mykey" (namespace
>> would be optional). If no namespace is provided then the default
>> partitioner is used. In this way we could support ranges for those keys
>> that their namespace's partitioner supports it. Of course, namespaces
>> could also be used for other purposes.
>>
>> I have discussed this with a friend who encouraged me to post here. I
>> hope I'm not way off with this one.
>>
>> An alternative is to get multiple tables working and implement per-table
>> partitioner support. I think there is a conceptual distinction between
>> the two in the sense that a table would most likely be a grouping of
>> column families whereas namespaces could span different tables and, in
>> some occasions/applications, one might want to utilize the same column
>> families with different namespaces.
>>
>> Any feedback is greatly appreciated.
>>
>> - Neophytos
>>
>

Reply via email to