- 浏览: 375066 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
真的全站唯一:
描述的能不能准确一点,我也以为bigDecimal性能比dou ...
【性能】Java BigDecimal和double性能比较 -
zhanggang807:
学习到了。。以后会考虑往这方面设计
【java规范】Java spi机制浅谈 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Xiong506:
xiyuan1025 写道你这是在linux下吗,我在linu ...
[监控]Btrace监控简单笔记 -
Bll:
找不到实现类
【java规范】Java spi机制浅谈
因为未来业务发展的一个需求里的,考虑要用到NoSql,所以做了一些预研。今天简单体验了下mongdb,感觉挺合适的,有点热血沸腾。简单记录下mongoDB的一些初体验。
mongoDB的特性有哪些?以下是官网的定义:
MongoDB (from "humongo us") is a scalable, high-performance, open source NoSQL database. Written in C++, MongoDB features:
-
Document-oriented storage »
JSON-style documents with dynamic schemas offer simplicity and power.
-
Full Index Support »
Index on any attribute, just like you're used to.
-
Replication & High Availability »
Mirror across LANs and WANs for scale and peace of mind.
-
Auto-Sharding »
Scale horizontally without compromising functionality.
-
Querying »
Rich, document-based queries.
-
Fast In-Place Updates »
Atomic modifiers for contention-free performance.
-
Map/Reduce »
Flexible aggregation and data processing.
-
GridFS »
Store files of any size without complicating your stack.
-
Commercial Support »
Enterprise class support, training, and consulting available.
以上定义很喜人吧,我还没有深入研究。其他的特性且不说,单是以下两个特性已经能满足我的需求了。
1.面向集合,模式自由 。 “面向集合”(Collection-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库 (RDBMS)里的表(table),不同的是它不需要定义任何模式(schema)。
2.虽然是非结构化数据,但支持动态查询 。允许在任意字段赏建立索引,支持任意属性作为条件的遍历查找。
不过深入的还需要在调研。
以下记录一下体验帖,没任何技术含量,入门可参考:
1.安装
1.下载:http://www.mongodb.org/downloads 在上面找到你需要的版本。
2.linux下的安装
解压即可,并通过sudo mkdir -p /data/db 创建数据存储目录。
3.启动:先到mongodb安装目录的bin目录下启动mongod,然后启动一个客户端mongo即可进行操作。输入help命令就可以查到主要的命令了。逐一体验即可。
2.java客户端体验
1.还是在官网上下载java driver
2.编写代码
以下是我编写的一些插入、查找功能等代码,还是十分简单的
package test.mongodb; import java.net.UnknownHostException; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; public class MyDB { DB db; DBCollection coll; MyDB(String dbName) { Mongo m = null; try { m = new Mongo("localhost", 27017);//创建Mongo实例 } catch (UnknownHostException e) { e.printStackTrace(); } catch (MongoException e) { e.printStackTrace(); } db = m.getDB(dbName);//获取数据库 coll = db.getCollection("foo");//数据集,类似表 } /** * 往数据集里插入一个文档 */ public void insertDoc() { BasicDBObject doc = new BasicDBObject(); doc.put("memberId", "abing3"); doc.put("businessModel", "manufature"); doc.put("count", 1); BasicDBObject info = new BasicDBObject(); info.put("x", 203); info.put("y", 102); doc.put("attr", info); coll.insert(doc); } /** * 往数据集里循环插入文档 */ public void loopInsertDoc() { for (int i = 0; i < 100; i++) { BasicDBObject doc = new BasicDBObject(); doc.put("memberId", "abing3"+i); doc.put("businessModel", "manufature"); doc.put("count", 1); BasicDBObject info = new BasicDBObject(); info.put("x", 203); info.put("y", 102); doc.put("attr", info); coll.insert(doc); } } /** * 从数据集里查找一个文档 */ public void findDoc() { DBObject myDoc = coll.findOne(); System.out.println(myDoc); } /** * 统计文档数 */ public void countDocs(){ System.out.println(coll.count()); } /** * 通过游标遍历文档 */ public void iterateAccess() { DBCursor cur = coll.find(); while (cur.hasNext()) { System.out.println(cur.next()); } } /** * 通过条件查找 */ public void findDocWithQuery() { BasicDBObject query = new BasicDBObject(); query.put("member_id", "abing37"); DBCursor cur = coll.find(query); while (cur.hasNext()) { System.out.println(cur.next()); } } /** * 查询集合 */ public void querySet() { BasicDBObject query = new BasicDBObject(); query.put("i", new BasicDBObject("$gt", 20).append("$lte", 30)); DBCursor cur = coll.find(query); while (cur.hasNext()) { System.out.println(cur.next()); } } /** * 创建索引 */ public void createIndex() { coll.createIndex(new BasicDBObject("memberId", 1)); } //test public static void main(String[] args) { MyDB db = new MyDB("mydb"); // db.insertDoc(); // db.loopInsertDoc(); // db.findDoc(); // db.countDocs(); // db.iterateAccess(); // db.findDocWithQuery(); // db.querySet(); // db.createIndex(); } }
发表评论
-
Xml ResourceBundle简单实现
2012-04-17 21:45 4364ResourceBundle主要是用于和本地语言环境相关的一些 ... -
【maven】多子模块maven模板工程archetype创建过程
2012-04-02 20:55 17573最近项目里需要创建一 ... -
【java基础】如何设计java应用程序的平滑停止
2012-03-05 23:44 10924java应用程序退出的触发机制有: 1.自动结束:应用没有存 ... -
【java并发】juc Executor框架详解
2012-02-26 13:55 12374Executor 框架是 juc 里提供的线程池的实现。 ... -
【java并发】juc高级锁机制探讨
2012-02-23 00:52 8510最近在看一些j ... -
【java并发】基于JUC CAS原理,自己实现简单独占锁
2012-02-14 13:47 7765synchronized的基本原理回 ... -
【JDBC,数据库】Oracle date和timestamp类型混用时需要注意的索引失效问题
2011-12-14 15:27 88531.关于 Oracle date和timestamp类型 D ... -
【JVM】HotSpot JVM内存管理和GC策略总结
2011-12-13 22:05 15878JVM的相关知识是学习java ... -
【性能】JDBC PreparedStatement和连接池PreparedStatement Cache学习记录
2011-12-08 17:20 16759之前看JDBC规范的时候对PreparedStatement只 ... -
32位机器下的一个java.lang.OutOfMemoryError错误分析
2011-10-17 11:19 2546昨天在本人windows机器( ... -
[监控]Btrace监控简单笔记
2011-09-09 10:57 4902前阵子看了公司网站的一个cache 命中率统计的btrace监 ... -
DBCP数据源配置项记录
2011-09-01 20:22 2933网站最近发生了数据库连接爆掉的问题。排查了下各个应用存在 ... -
【性能】Java BigDecimal和double性能比较
2011-08-28 20:06 14107我们知道 java 里面有个 BigDecimal ... -
【Spring】IOC容器并发条件下,可能发生死锁
2011-08-28 17:07 68331.背景 上周在生产环境应用启 ... -
JDK7 AIO 初体验
2011-08-17 19:20 2534JDK7 AIO初体验 JDK7已经releas ... -
如果要用java实现算法,一定慎用递归
2011-04-06 20:41 12823现象 : 递归是我们很经典的一种算法实现,可以很好的 ... -
java日志,需要知道的几件事(commons-logging,log4j,slf4j,logback)
2011-02-28 17:12 46237java日志,需要知道的几件事 如果对于comm ... -
JVM问题诊断常用命令:jinfo,jmap,jstack
2010-08-17 17:55 123951.jinfo 描述:输出给定 java ... -
java 浮点数为什么精度会丢失
2010-07-15 22:30 4838由于对float或double 的使用不当,可能会出现精度 ... -
一个枚举类的方法设计
2010-06-21 15:28 1647public enum ActionType { A ...
相关推荐
第2章 NoSQL上手初体验 17 2.1 第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车品牌和型号数据 22 2.2 使用多种语言 30 2.2.1 MongoDB驱动 30 2.2.2 初识Thrift 33 2.3 小结 ...
更容易的集成、分布式、无模式、故障恢复等特点,正在一步步餐食关系型数据库的市场,作为一个与时俱进的码农了解一下新技术是必须的,尤其是在读了《NoSql精粹》之后,更是想体验一下NoSql数据库的威力。...
该网站具有清晰的视觉效果,同时为用户带来直观的体验,带来诱人而友好的感觉。 作为该平台货币化的可能性,我们已经实施了折扣代码和会员链接。 其他选项(例如,高级帐户和业务/服务帐户)也是可以在将来实现的...
NoSQL的产生就是为了解决大数据量、高扩展性、高性能、灵活数据模型、高可用性。但是光通过主从模式的架构远远达不到上面几点,由此MongoDB设计了副本集和分片的功能。这篇文章主要介绍副本集:mongoDB官方已经不...
轻量级持久化层封装,针对RDBMS(MySQL、SQLServer、Oracle等)和NoSQL(MongoDB、Redis等)提供支持;完善的插件机制,助力于更细颗粒度的业务拆分;独特的独立服务开发体验;功能强大的验证框架,完全基于Java注解...
技术领域烧瓶微框架(Python) Java脚本jQuery的AJAX MongoDB(NoSQL数据库) 引导程序(3.3.7) HTML CSS用户体验这个Timing Assistant应用程序的想法来自我整个童年时期的游泳经历。 我注意到计时过程中需要涉及...
布基托 持续部署 关于 Bookito 是一个有趣的项目,它提供了一个用户界面来创建“Bookitos”或在线小书。... MongoDB - 浏览并继续阅读他们的,这应该可以帮助您更好地了解 NoSQL 和 MongoDB。 Express -
数据库:可能采用MySQL或NoSQL数据库如MongoDB存储用户健康数据和相关信息。 功能概述: 用户注册与登录:通过微信授权机制进行快速登录,保证用户身份的唯一性和安全性。 健康数据记录:用户可以输入或同步各种...
数据库方面,系统可能会选择MySQL或NoSQL数据库如MongoDB来存储热点数据和用户信息。 在功能模块方面,智能热度分析和自媒体推送平台主要包括以下几个核心部分: 1. 热点追踪:系统能够实时监控社交媒体、新闻网站...
应用功能大学平台点对点聊天现场直播大学平台公众用户互动活动通知实时大学成绩娱乐节目讨论区技术特色开源的服务器端的Node.Js Express MongoDB-NoSQL数据库数字海洋云托管丰富的Android本机UI 使用Nginx进行负载...
Kurakoo是一个网站,您可以在此网站上(安全地)结交朋友,并从信任的人那里了解更多信息。 Kurakoo是一个在线社区,人们提供与Quora网站类似的问题的答案。...在用户体验丰富的平台上为社会事业工作 对于所有
MongoDB,一个 NoSQL 数据库 E express.js,一个 Web 应用程序框架 一个 ngular.js,一个用于 Web 应用程序的 JavaScript MVC 框架 Node.js,一个用于可扩展服务器端和网络应用程序的软件平台 对于那些不想处理 ...
FashionFeed和小队室减少在线和离线购物之间的障碍和差异,使其成为用户的终极协作和身临其境的购物体验。... 我们使用Express生成了REST API... MongoDB已被用作NoSQL数据库,以JSON格式将数据存储为文档,并使用mongoos
图1 ⽤于实时分析的MongoDB架构 MongoDB⼤集群⽬前存在⼀些稳定性问题,会发⽣周期性的写堵塞和主从同步失效,但仍不失为⼀种潜⼒⼗⾜的可以⽤于⾼速数据分析的 NoSQL。 此外,⽬前⼤多数服务⼚商都已经推出了带4GB...
CLI支持-支持基于命令行的应用开发RPC支持-提供包括PHPRpc、HProse、jsonRPC和Yar在内远程调用解决方案MongoDb支持-提供NoSQL的支持缓存支持-提供了包括文件、数据库、Memcache、Xcache、Redis等多种类型的缓存支持...