# 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

#########################
# 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

############################
# 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

############################
# JCacheStore properties   #
############################
#gora.cache.datastore.default=org.apache.gora.jcache.store.JCacheStore
#gora.datastore.jcache.provider=com.hazelcast.client.cache.impl.HazelcastClientCachingProvider
#gora.datastore.jcache.hazelcast.config=hazelcast-client.xml
#gora.datastore.default=org.apache.gora.memory.store.MemStore
