我有一个我仍在开发的AWS CloudSearch实例.
有时,例如当我对字段的格式进行一些修改时,我发现自己想要消除所有数据并重新生成它.
有没有办法使用控制台清除所有数据,或者我必须通过程序方式来解决它?
如果我必须使用编程方法(即生成和POST一堆"删除"SDF文件)有什么好方法可以查询CloudSearch实例中的所有文档吗?
我想我可以删除并重新创建实例,但这需要一段时间,并丢失所有索引/等级表达式/文本选项/等
我们公司正在使用一些仅接受来自"成像设备"输入的软件,即TWAIN设备(例如扫描仪).
问题是我们以数字方式接收文件,因此使用实际的扫描仪需要我们打印,扫描和粉碎我们已经在计算机上已有的文档,而不是软件中的文档.
如果有人知道在此期间我们如何能够解决这个问题,我很好奇.我的第一个想法是找到一些方法来欺骗程序认为我们正在使用扫描仪,通过一些刚刚读入文件的新"成像设备",并将其吐出到软件中,但我甚至都没有知道从哪里开始.
我们提出了一个功能请求,看看这个问题应该如何在软件本身中得到解决,但该公司因更新而非常苛刻.
我正在使用大型PostgreSQL数据库,我正在尝试调整它以获得更高的性能.
我们的查询和更新似乎使用外键进行了大量查找.
我想要的是一种相对简单的方法,可以将索引添加到我们的所有外键,而无需遍历每个表(~140)并手动执行.
在研究这个时,我发现没有办法让Postgres自动为你做这件事(就像MySQL那样),但我也很乐意听到其他的说法.
在查看我的查询日志时,我看到一个奇怪的模式,我没有解释.
在几乎所有查询之后,我都"从DUAL中选择1".
我不知道它来自何处,我当然不会明确地进行查询.
日志基本上如下所示:
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
10 Query SELECT some normal query
10 Query select 1 from DUAL
...etc...
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个问题吗?
MySQL版本:5.0.51
驱动程序:使用JDBC的Java 6应用程序.MySQL的连接器的Java-5.1.6-bin.jar
连接池:commons-dbcp 1.2.2
validationQuery被设置为"从DUAL中选择1"(显然),并且当验证查询非空时,显然连接池默认testOnBorrow和testOnReturn为true.
这给我带来的另一个问题是,我是否真的需要验证查询,或者我是否可以通过禁用它或至少降低其使用频率来提高性能.不幸的是,编写我们的"数据库管理员"的开发人员不再和我们在一起了,所以我不能要求他为我辩护.任何输入将不胜感激.我将深入挖掘API并谷歌一段时间,如果我发现任何值得的东西,我会报告.
编辑:添加了一些更多的信息
EDIT2:为以后发现此问题的任何人添加了正确答案中要求的信息
我使用PostgreSQLDialect在PostgreSQL 8.4的一个相当大的项目中使用Hibernate 3.3.2.
我们建立关系的方式,最终我们对表的外键属性进行了大量搜索.
出于性能原因,我想在使用hbm2dll.auto创建表时,让Hibernate向所有外键列添加索引.
MySQL会自动为这些列添加索引,但似乎没有办法在Postgres中执行此操作.
有没有我可以设置的选项,或者我可以添加到我的hbm.xml文件中以实现这一目的?
CloudSearch的结果只是最终一致的.
在我的95%的应用程序中,这是它提供的性能和冗余的可接受的权衡.
在最后的5%中,我发现自己发布了一个新的SDF文档,然后立即运行一个查询,我需要反映我刚刚做的POST.
目前,我有一个拼凑在一起的解决方案,涉及轮询CloudSearch,直到结果符合我的预期,直接在POST之后.不幸的是,当我有多个用户时,这会产生许多问题,包括与额外读取相关的成本($)增加到竞争条件.
处理这种情况有什么最佳做法吗?
来自AWS论坛的xpost:https://forums.aws.amazon.com/thread.jspa?messageID = 470636
编辑:有关我的具体用例的其他信息.
我正在搜索带有大量布尔查询的搜索结果,我希望能够更新一个或多个文档,使它们不再出现在查询中,然后刷新视图以显示结果.
具体来说,我有一堆带有布尔值的文档,标记为"已归档"
当我在未归档的视图中查看它们,然后将它们标记为已归档时,我希望能够刷新视图而不显示这些项目.
我也使用CloudSearch进行排序/过滤/分页,这使得插入或修改本地副本变得很困难
consistency eventual-consistency amazon-web-services amazon-cloudsearch
我想使用一个ArrayList(或其他一些集合),就像我将如何使用标准数组一样.
具体来说,我希望它以一个初始大小(比如SIZE)开始,并且能够明确地设置元素,
例如
array[4] = "stuff";
Run Code Online (Sandbox Code Playgroud)
可以写
array.set(4, "stuff");
Run Code Online (Sandbox Code Playgroud)
但是,以下代码抛出IndexOutOfBoundsException:
ArrayList<Object> array = new ArrayList<Object>(SIZE);
array.set(4, "stuff"); //wah wahhh
Run Code Online (Sandbox Code Playgroud)
我知道有几种方法可以做到这一点,但我想知道是否有人喜欢,或者可能是更好的收藏品.目前,我正在使用如下代码:
ArrayList<Object> array = new ArrayList<Object>(SIZE);
for(int i = 0; i < SIZE; i++) {
array.add(null);
}
array.set(4, "stuff"); //hooray...
Run Code Online (Sandbox Code Playgroud)
我问的唯一原因是因为我在循环中这样做可能会运行很多次(数万次).鉴于ArrayList调整大小行为是"未指定的",我宁愿不浪费任何时间调整自身,或者在数组中备用它的额外未使用的点上的内存.这可能是一个没有实际意义的问题,因为我将完全通过调用array.set()来填充数组(几乎总是数组中的每个单元格),并且永远不会超过容量?
我宁愿只使用普通数组,但我的规格要求我使用Collection.
foreign-keys ×2
indexing ×2
java ×2
postgresql ×2
collections ×1
consistency ×1
database ×1
hibernate ×1
mysql ×1
sql ×1
twain ×1