I am new to geoNetwork, I want to know why geoNetwork use H2 database, Is there any special reason not to use mysql or pgsql? what are the special features in H2 database in GIS, I search about this in google but i didn't get clear answer.
The default database is h2 just because it is easier to deploy. But it can be changed on the configuration file:
For the geographic data, geoNetwork uses two approaches: one is to use shapefiles and the other one is to use postGIS. So, it doesn't matter if you use h2 or postgreSQL, as the geographic indexes will not be dependent of the database (unless you use postGIS explicitly).
geoNetwork also uses a Lucene index to store the data, so the speed of your searches will not directly depend on the database, but on this Lucene index.
The database is used to store settings and configurations, relations between metadata and a backup of the metadata to rebuild the Lucene index when needed. That's why you can redeploy geoNetwork just using the war file and the database: the shapefiles and the Lucene indexes will be rebuilt. But the database is not used for most of the operations.
Also, several tests have shown us that when you have less than 20.000 records on geoNetwork, the difference on speed between postGIS indexes and shapefile is irrelevant. So, unless you have a big geoNetwork database, you don't have to worry about postGIS.