# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# MORE DOCUMENTATION ON ALL OF THESE PROPERTIES CAN BE FOUND AT
# http://gora.apache.org/current/

#gora.datastore.default=org.apache.gora.mock.store.MockDataStore
#gora.datastore.autocreateschema=true

###############################
# Default SqlStore properties #
###############################

#gora.sqlstore.jdbc.driver=org.hsqldb.jdbc.JDBCDriver
#gora.sqlstore.jdbc.url=jdbc:hsqldb:hsql://localhost/nutchtest
#gora.sqlstore.jdbc.user=sa
#gora.sqlstore.jdbc.password=

################################
# Default AvroStore properties #
################################

# gora.avrostore.codec.type=BINARY||JSON
# gora.avrostore.output.path=file:///tmp/gora.avrostore.test.output

################################
# DatafileAvroStore properties #
################################
# DataFileAvroStore is file based store which uses Avro's 
# DataFile{Writer,Reader}'s as a backend. This datastore supports 
# mapreduce.

# gora.datafileavrostore.###=

#########################
# HBaseStore properties #
#########################
# HBase requires that the Configuration has a valid "hbase.zookeeper.quorum"
# property. It should be included within hbase-site.xml on the classpath. When
# this property is omitted, it expects Zookeeper to run on localhost:2181.

# To greatly improve scan performance, increase the hbase-site Configuration
# property "hbase.client.scanner.caching". This sets the number of rows to grab
# per request.

# HBase autoflushing. Enabling autoflush decreases write performance. 
# Available since Gora 0.2. Defaults to disabled.
# hbase.client.autoflush.default=false

# HBase client cache that improves the scan in HBase (default 0)
# gora.datastore.scanner.caching=1000

#############################
# CassandraStore properties #
#############################

# gora.cassandrastore.servers=localhost:9160

#######################
# MemStore properties #
#######################
# This is a memory based {@link DataStore} implementation for tests.

# gora.memstore.###=

############################
# AccumuloStore properties #
############################
#gora.datastore.default=org.apache.gora.accumulo.store.AccumuloStore
#gora.accumulo.mapping.file=gora-accumulo-mapping.xml
#gora.datastore.accumulo.mock=true
#gora.datastore.accumulo.instance=a14
#gora.datastore.accumulo.zookeepers=localhost
#gora.datastore.accumulo.user=root
#gora.datastore.accumulo.password=secret

############################
# SolrStore properties     #
############################
#gora.datastore.default=org.apache.gora.solr.store.SolrStore
#gora.solrstore.solr.url=http://localhost:9876/solr
#gora.solrstore.solr.config=solrconfig.xml
#gora.solrstore.solr.schema=gora-solr-schema.xml
#gora.solrstore.solr.batchSize=100
#gora.solrstore.solr.solrjserver=http
#gora.solrstore.solr.commitWithin=1000
#gora.solrstore.solr.resultsSize=100

############################
# MongoDBStore properties  #
############################
#gora.datastore.default=org.apache.gora.mongodb.store.MongoStore
#gora.mongodb.override_hadoop_configuration=false
#gora.mongodb.mapping.file=/gora-mongodb-mapping.xml
#gora.mongodb.servers=localhost:27017
#gora.mongodb.db=mytestdatabase
#gora.mongodb.login=login
#gora.mongodb.secret=secret
