Re: [gnome-db] meta store.
- From: Vivien Malerba <vmalerba gmail com>
- To: bas driessen xobas com
- Cc: GNOME-DB List <gnome-db-list gnome org>
- Subject: Re: [gnome-db] meta store.
- Date: Fri, 17 Jul 2009 14:26:54 +0200
2009/7/17 Bas Driessen
<bas driessen xobas com>
On Fri, 2009-07-17 at 14:08 +0200, Vivien Malerba wrote:
2009/7/17 Bas Driessen <bas driessen xobas com>
Hello,
Question regarding meta store. There is a function to update the meta store as follows:
gda_connection_update_meta_store
When I run this, it waits about 10 seconds or so, so I assume it is building the meta store. However, when it is finished, I don't see any output. I would expect files to show up in etc/libgda-4.0, but nothing is added there. Is there meant to be any output?
Also if this generates a structure in memory only, does that mean that I have to call this function every time when I start my application?
My understanding was, that the meta store was written to an XML file and that the libgda would reference that. Only when a table layout has changed, you would run the gda_connection_update_meta_store function to update the XML files.
Meta data storage has changed since V3. In V3, getting the meta data was quicker and created an XML file which was loaded in memory even if unused. There were problems with that approach:
* it used memory even when not required
* not much meta data was being fetched (which is why it was so fast), the main missing feature was that database schemas were not handled.
* the loading time would have increased and the consummed memory as well if I had added the missing meta data
* it was almost impossible to the API used to add some personnal data to the dictionary.
So in V4:
* the meta data is now stored in a database instead of an XML file
* the data is not loaded in main memory if not needed
* the meta data being fetched now includes schemas, triggers, ...
* the database used to store meta data from a connection can be configured, see http://library.gnome.org/devel/libgda/stable/gda-dict.html#GdaMetaStoreSetup. By default a temporary database is created, destroyed when the connection is closed (more exactly when the GdaMetaStore object associated to the connection is destroyed).
it's up to the user to handle the meta data updates, probably one time to get the complete meta data the first time, and then incremental updates when database objects are created or removed. This is what Libgda's tools (the gda-sql console program and the upcomming gda-browser UI program) do: then create an SQLite database to store meta data in $HOME/.local/share/libgda
Thanks Vivien. So if I use a postgresql database, will the meta data be stored in a postgresql table? If so where is it, as I can not see it in the psql command line tool.
It's up to you to decide where you want the meta data to be stored:
* it will be by default in a temporary SQLite database which is not what you want
* it can be stored in your PostgreSQL database along with your data
* it can be in a separate SQLite file
In order to cache, I need to prevent that this meta data is removed upon exiting my application, correct? Is that all explained of how to do that in the link you sent me? Well, I probably better read it first :)
There some sample code there, and you can then have a look at the gda-sql.c's code.
Vivien
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]