Month: February 2014

代码片断:在m位数之前加0,凑足n位

代码片断:在m位数之间加0,凑足n位. 这主要用于使数字按字符串排序的顺序跟直接按数字排序的顺序相同 比如把 8,9,10,11 变成 08, 09, 10, 11后,按字符串序排序仍与数字大小序相同 /** * 1 => 0001 * * @param positiveNumber * @param maxValue * @return */ private static String prependZeroForNumber(int positiveNumber, int maxValue) { int digitLength = String.valueOf(maxValue).length(); String numStr = String.valueOf(positiveNumber); StringBuffer pre = new StringBuffer(); for (int i = 0; i < digitLength – numStr.length(); …

代码片断:在m位数之前加0,凑足n位 Read More »

要不要做冗余字段?

冗余是为了避免join, 但避免join未必要一定冗余。你可以先把A关联的b_id查出来,然后再去B表里查一次。 那么什么情况下应该选择冗余,什么情况下选择查询两次呢?除了要看数据会不会更新,还有一些考虑因素:(大前提是不作join) 1. 如果只需要看A的单行记录,及这行记录对应的B记录,使用两次查询就够了 2. 如果需要查看A的列表,及对应的B记录,那就可以考虑把B记录冗余到A表,也可以不冗余。不冗余的话,就要收集A列表中所有的b_id,然后批量地去B表中执行in查询,稍微有点麻烦 3. 如果需要根据B表中的字段查询A记录,并带出相关的B记录,那就只能用冗余了。为了帮助理解,举个例子:在一个论坛系统的数据库中,找出这样一些“回复”记录,这些回复对应的主贴的作者以"k"开头且回复发表于三天之内,结果中除了要显示“回复”记录,还要显示主贴的作者。 如果“回复”表里没有冗余“主贴作者”字段,这个问题就无解。

mongodb + spring data一起使用时,bean的id应该用什么类型?

mongodb + spring data一起使用时,bean的id应该用什么类型? 在插入bean时我不会设置id的值,而是让mongodb/spring data把生成的_id塞进来。 用原子类型long, int 会有问题;不设置值时,值就是0, mongodb会认为你传的_id值为0. 第一条记录以_id=0插入成功后,插入第二条_id=0的记录时,系统会报键重复的异常。 用Long, Integer行不行? 也不行,因为Spring Data没有内置这样的转换。 正确答案是:String或BigInteger, Spring Data默认只支持这两种类型。参见:ObjectIdToBigIntegerConverter 和 ObjectIdToStringConverter .  或者你可以自定义一个converter, 但我没有去验证。

mongodb出的nosql数据库选型方案

http://www.mongodb.com/lp/whitepaper/nosql-considerations 有自吹的嫌疑,但仍然很有参考价值 ========== 摘抄一段使用nosql的三个动机: (1)In some cases the motivation is technical — such as a need to scale or perform beyond the capabilities of their existing systems — (2)while in other cases companies are driven by the desire to identify viable alternatives to expensive proprietary software. (3)A third motivation is agility or speed of development, …

mongodb出的nosql数据库选型方案 Read More »