内存数据库为用户提供自动建议结果

时间:2013-07-10 16:04:22

标签: java hsqldb in-memory-database

我有一份州/县的名单,他们相应的城镇和每个城镇的相应城镇。

- State1
  - City1
    - Town1
    - Town2
    ...
  - City2
  ...

我需要一种方法将它们存储在我的企业级Java Web应用程序中。

必须保持实体之间的关系,即城镇属于一个城市,城市属于州/县。

数据的目的是为用户提供自动建议的城镇和城市,并输入文本框。

此数据可能偶尔会发生变化,需要更新(可能相当罕见)。

所以例如:
  - 用户从下拉列表中选择state1。
  - 他们现在将charchters'san'输入城市输入框   - 我想执行搜索并返回以state1中的'san'开头的城市列表。 (Ajax请求)。

我正在寻找那些可能不得不实现类似之前的人的反馈。

您是否使用过内存数据库,例如HSQL?

2 个答案:

答案 0 :(得分:1)

是的,之前我曾经使用过HSQL这样的东西。效果很好。将参考数据定义为SQL插入语句的集合,并运行模式创建脚本,以及应用程序启动时的参考数据插入。

Spring现在对嵌入式数据库有很好的支持:
http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/jdbc.html#jdbc-embedded-database-support

<jdbc:embedded-database id="dataSource">
    <jdbc:script location="classpath:schema.sql"/>
    <jdbc:script location="classpath:reference-data.sql"/>
</jdbc:embedded-database>

然后,您可以像使用任何其他数据库一样使用上面定义的 dataSource ,并且可以在必要时切换到真正的数据库,而不会影响任何代码。

答案 1 :(得分:0)

您是否可以灵活地在中间使用搜索服务器?我对企业系统有类似的要求,并使用Apache Solr(基于Lucene的Search Server)。 Solr配置具有解析数据库和存储索引数据集合的选项。在用户界面中,Ajax请求(提交限制至至少按下2个字母)将调用API到Solr。

这个设置给了我惊人的快速结果。