solr是数据库吗(Java数据库,哪个更好用)
本文目录
- Java数据库,哪个更好用
- Lucene 或者 solr 有什么不一样 分别何时使用
- solr 数据库有更新,solr怎么更新
- Javaweb中redis和solr哪个性能高,感觉这两个留一个就可以了
- solr5.5怎么连接oracle数据库
- solr的索引数据可以存放到数据库吗
- 有数据库为什么要solr
Java数据库,哪个更好用
我将推荐给你们10个最高效的Java数据库
1、MongoDB——最受欢迎,跨平台,面向文档的数据库
MongoDB是一个基于分布式文件存储的数据库,使用C++语言编写。旨在为Web应用提供可扩展的高性能数据存储解决方案。应用性能高低依赖于数据库性能,MongoDB则是非关系数据库**能最丰富,最像关系数据库的,随着MongDB 3.4版本发布,其应用场景适用能力得到了进一步拓展。
MongoDB的核心优势就是灵活的文档模型、高可用复制集、可扩展分片集群。你可以试着从几大方面了解MongoDB,如实时监控MongoDB工具、内存使用量和页面错误、连接数、数据库操作、复制集等。
2、Elasticsearch ——为云构建的分布式RESTful搜索引擎
ElasticSearch是基于Lucene的搜索服务器。它提供了分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是比较流行的企业级搜索引擎。
ElasticSearch不仅是一个全文本搜索引擎,还是一个分布式实时文档存储,其中每个field均是被索引的数据且可被搜索;也是一个带实时分析功能的分布式搜索引擎,并且能够扩展至数以百计的服务器存储及处理PB级的数据。ElasticSearch在底层利用Lucene完成其索引功能,因此其许多基本概念源于Lucene。
3、Cassandra——开源分布式数据库管理系统
最初是由Facebook开发的,旨在处理许多商品服务器上的大量数据,提供高可用性,没有单点故障。
Apache Cassandra是一套开源分布式No**L数据库系统。集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。于2008开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
因Cassandra是用Java编写的,所以理论上在具有JDK6及以上版本的机器中都可以运行,官方测试的JDK还有OpenJDK 及Sun的JDK。 Cassandra的操作命令,类似于我们平时操作的关系数据库,对于熟悉My**L的朋友来说,操作会很容易上手。
4、Redis ——开源(BSD许可)内存数据结构存储,用作数据库,缓存和消息代理
Redis是一个开源的使用ANSI C语言编写的、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 有三个主要使其有别于其它很多竞争对手的特点:Redis是完全在内存中保存数据的数据库,使用磁盘只是为了持久性目的; Redis相比许多键值数据存储系统有相对丰富的数据类型; Redis可以将数据复制到任意数。Redis 这么火,它都解决了哪些问题?
5、Hazelcast ——基于Java的开源内存数据网格
Hazelcast 是一种内存数据网格 in-memory data grid,提供Java程序员关键任务交易和万亿级内存应用。虽然Hazelcast没有所谓的“Master”,但是仍然有一个Leader节点(the oldest member),这个概念与ZooKeeper中的Leader类似,但是实现原理却完全不同。同时,Hazelcast中的数据是分布式的,每一个member持有部分数据和相应的backup数据,这点也与ZooKeeper不同。
Hazelcast的应用便捷性深受开发者喜欢,但如果要投入使用,还需要慎重考虑。
6、Ehcache——广泛使用的开源Java分布式缓存
主要面向通用缓存、Java EE和轻量级容器。
EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是hibernate中默认的CacheProvider。
主要特性有:快速简单,具有多种缓存策略;缓存数据有两级,内存和磁盘,因此无需担心容量问题;缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。Ehcache介绍及整合Spring实现高速缓存。
7、Hadoop ——用Java编写的开源软件框架
用于分布式存储,并对非常大的数据用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce则为海量的数据提供了计算。
8、Solr ——开源企业搜索平台,用Java编写,来自Apache Lucene项目
***隐藏网址***
与ElasticSearch一样,同样是基于Lucene,但它对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化。
9、Spark ——Apache Software Foundation中最活跃的项目,是一个开源集群计算框架
Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地。
10、Memcached ——通用分布式内存缓存系统
Memcached是一套分布式快取系统,当初是Danga Interactive为了LiveJournal所发展的,但被许多软件(如MediaWiki)所使用。Memcached作为高速运行的分布式缓存服务器,具有以下的特点:协议简单,基于libevent的事件处理,内置内存存储方式。
通过以上的分析,相信你就知道怎么选择了
Lucene 或者 solr 有什么不一样 分别何时使用
Lucene更像是一个SDK。 有完整的API族以及对应的实现。你可以利用这些在自己的应用里实现高级查询(基于倒排索引技术的),Lucene对单机或者桌面应用很实用很方便。
但是Lucene,需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦。于是,就有了Solr。
而Solr是一个有HTTP接口的基于Lucene的查询服务器,封装了很多Lucene细节,自己的应用可以直接利用诸如 .../solr?q=abc 这样的HTTP GET/POST请求去查询,维护修改索引。
给个比方就是,Lucene是给你一堆包,让你自己从底层构建一个数据库。而Solr是一个实现好的数据库程序,安装后就可以直接用了。
作者:汪浪
solr 数据库有更新,solr怎么更新
全部实时更新耗资源,敏感表实时更新,非敏感数据定时更新就行。
写个**L脚本,放在linux服务器定时执行,开AB数据库对linux服务器的增、改、查权限。
Javaweb中redis和solr哪个性能高,感觉这两个留一个就可以了
这2个不是一类的东西啊。主要看你的需求。
redis是非关系型,在内存中以Key-Value形式存储的数据库。特点是速度非常非常快。
solr是一个搜索引擎。一般用来作为网站内的搜索功能。
solr5.5怎么连接oracle数据库
solr5.5怎么连接oracle数据库
方法如下:
1、
启动Navicat
,连接-》oracle,配置如下:连接名随便起
2、Basic连接类型:连接类型有两种,我们先看用Basic的连接方式,此方法适合没有安装Oracle客户端的机器,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。
3,TNS连接类型:选择TNS**连接类型,你首先要安装好oracle客户端,安装完成后,连接数据库时,先配置OCI.dll路径,Navicat-》工具》选项》OCI,将oci.dll路径设置成你安装客户端的路径,如本例:D:\app\Administrator\product\11.2.0\client_2\oci.dll,
4,还有一步要做,到连接的Oracle数据库目录下找到tnsnames.ora文件,一般路径在D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN下,将该文件拷贝到你安装的oracle客户端目录下,如D:\app\Administrator\product\11.2.0\client_1\Network\Admin\tnsnames.ora,在连接时就可以直接用TNS方式连接了,程序会自动识别你的网络连接名,如果没有自动识别网络连接名,说明配置的不对,再检查下有说明漏的。
5,配置好之后,点连接测试,如果你数据库没有问题,则能连接测试成功。
solr的索引数据可以存放到数据库吗
在solr与tomcat整合文章中,我用的索引库是mycore,现在就以这个为例。
首先要准备jar包:solr-dataimporthandler-4.8.1.jar、solr-dataimporthandler-extras-4.8.1.jar和mysql-connector-java-5.0.7-bin.jar这三个包到solr的tomcat的webapps\solr\WEB-INF\lib下
在这个文件夹的conf下配置两个文件,添加一个文件。先配置solrconfig.xml。
在该文件下添加一个新节点。
《requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"》
《lst name="defaults"》
《str name="config"》data-config.xml《/str》
《/lst》
《/requestHandler》
在solrconfig.xml的同目录下创建data-config.xml。
配置:
复制代码
《dataConfig》
《dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/courseman"
user="root"
password="mysql" /》
《document》
《entity name="student"
query="SELECT * FROM student"》
《field column="id" name="id" /》
《field column="name" name="name" /》
《field column="gender" name="gender" /》
《field column="major" name="major" /》
《field column="grade" name="grade" /》
《/entity》
《/document》
《/dataConfig》
复制代码
schemal.xml的配置
复制代码
《?xml version="1.0" ?》
《!--
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
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 permissi*** and
limitati*** under the License.
--》
《schema name="example core one" version="1.1"》
《fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/》
《fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/》
《fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/》
《!-- general --》
《field name="id" type="int" indexed="true" stored="true" /》
《field name="gender" type="string" indexed="true" stored="true" /》
《field name="name" type="string" indexed="true" stored="true" /》
《field name="major" type="string" indexed="true" stored="true" /》
《field name="grade" type="string" indexed="true" stored="true" /》
《field name="_version_" type="long" indexed="true" stored="true"/》
《!-- field to use to determine and enforce document uniqueness. --》
《uniqueKey》id《/uniqueKey》
《!-- field for the QueryParser to use when an explicit fieldname is absent --》
《defaultSearchField》name《/defaultSearchField》
《!-- SolrQueryParser configuration: defaultOperator="AND|OR" --》
《solrQueryParser defaultOperator="OR"/》
《/schema》
复制代码
默认的文件不是这样的,稍微改动了一下。
field 的type类型是根据fieldtype 的name定义的。class是solr自定义的不能更改。
shcema.xml文件的field字段的属性介绍:
(1)name:字段名称
(2)type:字段类型(此处type不是java类型,而是下面定义的fieldType)
(3)indexed:是否索引看true--solr会对这个字段进行索引,只有经过索引的字段才能被搜索、排序等;false--不索引
(4)stored:是否存储看true--存储,当我们需要在页面显示此字段时,应设为true,否则false。
(5)required:是否必须看true--此字段为必需,如果此字段的内容为空,会报异常;false--不是必需
(6)multiValued:此字段是否可以保存多个值看
(7)omitNorms:是否对此字段进行解析看有时候我们想通过某个字段的完全匹配来查询信息,那么设置 indexed="true"、omitNorms="true"。
(8)default:设置默认值
有这样一个FieldType描述:
《fieldType name="text_general" positionIncrementGap="100"》
《****yzer type="index"》
《tokenizer/》
《filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /》
《filter/》
《/****yzer》
《****yzer type="query"》
《tokenizer/》
《filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /》
《filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/》
《filter/》
《/****yzer》
《/fieldType》
属性说明:
(1)name:类型名称,《field》中的type引用的就是这个name
(2)class:solr自定义的类型
(3)《****yzer type="index"》定义建立索引时使用的分词器及过滤器
(4)《****yzer type="query"》定义搜索时所使用的分词器及过滤器
(5)《tokenizer/》定义分词器
(6)《filter/》定义过滤器
uniqueKey属性
《uniqueKey》id《/uniqueKey》
类似于数据表数据的id,solr索引库中最好定义一个用于标示document唯一性的字段,此字段主要用于删除document。
defaultSearchField属性
就是你在做query搜寻时若不指定特定栏位做检索时, Solr就会只查这个栏位.
《defaultSearchField》default《/defaultSearchField》
copyField属性
是用来复制你一个栏位里的值到另一栏位用. 如你可以将name里的东西copy到major里, 这样solr做检索时也会检索到name里的东西.
《copyField source="name" dest="major"/》
现在可以将数据库的数据导入solr了。
点击Execute就可以了。
有数据库为什么要solr
严格来说,lucene负责数据存储,而solr只是一个引擎提供搜索和插入而已,跟数据库的解释器一样,有什么好处呢,比如一个数据库有一个字段存了1000个字,你想从这些字里面搜一个词的时候,普通的数据库只会让你使用like去查询,他会遍历每个字去模糊匹配,效率很低,而且有些是无法查询的,当然除了像一些特殊的数据库带有分词,比如postgresql,那lucene做的事情就是分词,然后去匹配分词的词中是否有你想搜的词就好了,当然了,为了提高这种检索效率和内存节省底层做了很复杂的事情,可以这么简单的认为,全文搜索这件事情上数据库是无法满足的
更多文章:
linux查看端口的命令(Linux查看端口是否被占用的命令是什么)
2026年4月15日 01:20
parameter name(loadrunner怎么参数化设置)
2026年4月15日 00:40
多线程处理器什么意思(cpu低频率、低功耗,多核心,多线程是什么意思)
2026年4月15日 00:20
fscanf读取txt文件字符串(c++怎么读取txt文件中的两段字符串并且存入两个数组)
2026年4月15日 00:00
若变量已正确说明为float类型(X为float型变量,则以下语句)
2026年4月14日 23:40
学pytorch前需要懂python吗(想学深度学习开发,需要提前掌握哪些python知识)
2026年4月14日 23:20
reactive翻译(reactive oxygen species是什么意思)
2026年4月14日 23:00
springboot starter(你知道的SpringBoot中常用的starter都有哪些)
2026年4月14日 22:20




