Stewart Smith wrote:
On Sun, May 31, 2009 at 11:00:48AM -0400, Jay Pipes wrote:
There is, therefore, no need to have multiple implementations of the INFORMATION_SCHEMA interface. There is, however, a need to swap out the storage backend of the INFORMATION_SCHEMA -- think: I_S stored in InnoDB, I_S stored in memcached, etc.

I don't think having I_S have its own store is good....

it's really only VIEWs on top of data from other places. Currently:
- variables
- table and database metadata
        - db.opt
        - directories in data dir
        - files ending in '.dfe' that get parsed okay.
- loaded plugins
- loaded collations
- whatever else I've missed.

OK, true enough. You're right...I'm thinking more that the metadata *itself* should have pluggable backends, which perhaps is what you've been working on?

The main problem with the current implementation being comparitive speed
of SHOW DATABASES/SHOW TABLES versus SELECT * FROM
INFORMATION_SCHEMA.TABLES stemming from the materialisation of the view.

so, if we look at listing databases, this is what happens:

- my_dir loads contents of directory into memory
- make_db_list reads that contents, works out if it's a database, stores
it in an array of database names
- I_S code writes this to a HEAP table
- HEAP table gets too big, writes to temp MyISAM table
- query executes (listing databases) using the handler interface on the
MyISAM table.

Where what we really want is a handler interface to readdir(3) (and
stat()) that we can execute the query on directly.

See, actually I don't agree here. I think that metadata should be stored in a database, with a real handler interface. Why not just use InnoDB for the I_S storage engine at first?

Although what we really, really want (hint: it's not zigazig ha) is to
have that readdir and stat be pluggable with whatever we want (e.g. a
scan on an engine data dictionary).

Right.

So there isn't really storage backends for I_S - rather a bunch of them
will pull their data from other stores. No need for them to be pluggable
as they're rather specific.

Why not pluggable? If I want to store my I_S in PBXT I should be able to do so...

No?

Jay

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to