[
https://issues.apache.org/jira/browse/CASSANDRA-7622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16448021#comment-16448021
]
Benjamin Lerer commented on CASSANDRA-7622:
-------------------------------------------
I have always been frustrated by that JIRA ticket and that frustration has only
grown with time. The root of my frustration is in fact the {{Virtual Table}}
name.
What every administrator would like to have when it start using C* is a way to
access the system information through CQL (ask [~pmcfadin] about it ;)). Every
major relational database provide that functionality. Oracle has [Dynamic
Performance
Views|https://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1.htm],
MSSQL has [System Views/Dynamic Management
Views|https://technet.microsoft.com/en-us/library/ms177862(v=sql.110).aspx] and
PostgreSQL has [System
Views|https://www.postgresql.org/docs/9.5/static/views-overview.html].
{{Virtual Table}} is a form of pluggable storage as used by
[SQLite|https://www.sqlite.org/vtab.html].
The idea of this ticket was lets add some form of pluggable storage and use it
to expose system information. At first glance, it looks like killing two bird
with one stone but after some time thinking about it, I tend to believe that we
could simply end up with 2 broken features.
Adding support for pluggable storages is a complex challenge that requires a
large number of changes all around the code base as outlined in the
{{Rocksandra}} discussion. On the other hand, as system information
(configuration, metrics, ring state ...) are locals, exposing them to the user
require much less changes to the code base but more reflection towards user
usability.
It should be easy for administrator to navigate through system information
tables/views but the {{Virtual Table}} syntax does not play well with it. If an
administrator wants an idea of what columns are returned by the
{{compaction_stats}} table and use {{DESCRIBE}} for it, what it will get will
be {{CREATE TABLE USING CompactionStats compaction_stats}}.
The tables should also be meaningful and easy to use. As we work a lot with the
different metrics (counters, gauges, timers, histograms...) we tend to assume
that it is also the case of the users but it is not so we should not rely on
the user knowing it.
As there is already some effort going on for a proper pluggable storage
solution, I came to the conclusion that we should drop that idea of {{Virtual
Table}} and simply expose the system information through what we could call
{{System Views}}. It will make the transition easier for people coming from the
relational word and will help us to focus on what is really important for users
which is the usability of the all thing.
[~adelapena] and I have been working on a patch on our side to expose most of
the system information through system views. We have done our best to make the
exposed views as useful as possible. Taking into account the fact that metrics
have been added without any constraint, making them fit to table was not always
easy :(.
I do not want to hijacke that ticket but if our approach make sense and people
are interested. I am willing to port our patch to C*.
> Implement virtual tables
> ------------------------
>
> Key: CASSANDRA-7622
> URL: https://issues.apache.org/jira/browse/CASSANDRA-7622
> Project: Cassandra
> Issue Type: Improvement
> Components: CQL
> Reporter: Tupshin Harper
> Assignee: Chris Lohfink
> Priority: Major
> Fix For: 4.x
>
>
> There are a variety of reasons to want virtual tables, which would be any
> table that would be backed by an API, rather than data explicitly managed and
> stored as sstables.
> One possible use case would be to expose JMX data through CQL as a
> resurrection of CASSANDRA-3527.
> Another is a more general framework to implement the ability to expose yaml
> configuration information. So it would be an alternate approach to
> CASSANDRA-7370.
> A possible implementation would be in terms of CASSANDRA-7443, but I am not
> presupposing.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]