我之所以喜欢MongoDB,主要是因为在动态语言中使用它是如此的简单,自然。到目前为止,我已经在两个项目(Encode 和 Sparrw)中使用过它了,虽然对这个选择我非常满意,但是有些问题我还是没有注意到,这些问题让我抓了好几个小时的头皮才解决。如果你有多台机器,然后为数据库多分配几台机器,那么有些问题可以迎刃而解,但是我的项目是运行在单个(虚拟)服务器之上的低流量Web应用程序。
(关于MongoDB,具体可以参考:http://www.mongodb.org/)
(关于作者的两个项目Encode 和 Sparrw,分别可以参考:http://en.co.de/和http://sparrw.com/)
这些问题都很简单,都是一些文档化的东西,不是什么Bug(当然,这要看你问谁了)。如果你读过所有的文档,那么这些问题可能你基本都见过了。我也是,但是在那之后,当再次遇到它们的时候,我就把文档中的内容都忘到脑后了,然后,我不得不再次修复它们。
使用64位的版本
32位的版本最多只能存储2.5GB的数据。当然,如果随便玩玩的话,这可能已经足够了。但是当你开始配置你的生产性(或用于演示的)系统的时候,记住要选择64位的版本,因为以后你无法通过“修复”来解决这个问题,你只能重新安装。
在另外一台机器上创建一个从数据库
如果你的MongoDB实例崩溃了(或者由于OOM挂掉了,或者整个系统都崩溃了),那么谁也无法保证你的数据会怎么样。你可以进行修复,但是这有点像运行fsck或买彩票——你永远都无法知道你将会得到什么结果。所以你应该创建一个从数据库(或者做一个“replica set”),并且,你应该把这个从数据库放到另外一个服务器上。如果一个VPS(Virtual Private Server 虚拟专用服务器)刚好可以满足你的(或其他人的)需要,那么这的确是一件麻烦事,但是,如果你珍惜你的数据的话,这是不可避免的。
让它更安全
在默认情况下,MongoDB不会进行身份验证,并且,它会监听所有的网络接口(对于你直接从他们的官方站点上获得的那个版本来说,这就是事实;各种Linux发行版(例如:Debian 和 Ubuntu)在默认情况下,都只绑定到127.0.0.1,这是十分明智的),这就是说,在世界上的任何地方,任何人都可以访问你的数据库。如果你在一个面向公众的服务器上使用它,那么这的确是一个问题。你可以把它设置成必须进行身份验证,也可以让MongoDB只监听localhost。我比较喜欢后者,因为在我的服务器上,我是唯一一个用户。
总是使用getLastError
如果你不需要闪电般的速度,花一点时间来确保你的变更对于这个数据库来说是OK的,并且对数据进行修改并没有造成什么问题绝对是值得的——如果存在什么问题的话,那么应该在你的应用程序中把它们记录下来,让你知道数据库发生了一些故障。或者,如果你确定你需要使用getLastEror(),那么至少不要混合使用,也不要在同一个集合上使用它。MongoDB无法确保命令会按照指定的顺序来执行。在我的测试代码中,我做了一个“异步的”remove()调用(也就是说,我无需等待这个函数执行完毕),然后,在remove()愉快地移除它们(可能已经把它们全部移除,也可能只是移除了其中的一部分,还可能什么也没有移除,这主要取决于竞争)以前,我插入了一些新的条目。这让我困惑了好几个小时。
有许多在线的文档,在各种论坛,也可以找到很多这方面的信息,如果你能通过更简洁的方式获得这方面的信息,那也不错。对于这方面来说,我发现《MongoDB: The Definitive Guide book》 和 10gen videos都很有帮助——例如,deployment strategies视屏对于入门来说,是绝佳的视频教程。
来源:http://club.topsage.com/thread-2358393-1-1.html
I
-
分享到:
相关推荐
MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...
教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...
整合Java、log4j2和MongoDB,你需要以下几个关键步骤和相应的jar包: 1. **添加依赖**:在你的项目中,你需要包含log4j2的核心库和MongoDB的Java驱动。这些通常通过Maven或Gradle等构建工具来管理。对应的jar包可能...
"MongoDB架构简析"部分,我们需要理解MongoDB的三个主要组件:Mongod、MongoDB Shell和MongoDB复制集。Mongod是数据库服务器,负责处理数据的存储和检索;MongoDB Shell是一个交互式JavaScript环境,用于管理数据库...
### MongoDB入门知识点详解 #### 一、NoSQL简介与MongoDB概述 - **NoSQL**:NoSQL(Not Only SQL)是一种非关系型数据库管理系统的总称,它突破了传统关系型数据库在处理大规模数据时的限制,尤其适用于大数据及高...
本书的许可协议为 Attribution-NonCommercial 3.0 Unported license,这意味着你可以自由地复制、分发、修改或展示本书,但需要始终注明原作者Karl Seguin,并且不得将本书用于商业目的。你可以通过访问***查看许可...
MongoDB是一个开源、高性能、无模式的文档型数据库,是NoSQL数据库产品中的一种。它的出现主要应对“三高”等问题,它可以解决需要存储数据量大、高并发读写、高可用的现实问题,适用于社交朋友圈、游戏积分、物流...
根据提供的文件内容,我们将详细探讨MongoDB相关的知识点,并围绕NoSQL数据库的特点和优势,以及分布式系统理论中的CAP定理和ACID与BASE模型。 首先,MongoDB是一种流行的NoSQL数据库,它以文档的形式存储数据,与...
### MongoDB入门到精通 #### 一、MongoDB简介 **MongoDB** 是一款采用 C++ 编写的开源、可扩展且高性能的文档型数据库。它以其面向文档的特性、易于扩展性和高性能而著称,成为了现代应用开发中非常受欢迎的选择之...
在这个“MongoDB入门”主题中,我们将深入探讨MongoDB的基础知识、安装与配置、数据模型、查询操作以及高级特性。 首先,让我们了解MongoDB的基本概念。MongoDB以其“集合”(Collections)和“文档”(Documents)...
MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...
《MongoDB入门指南》是一个快速入门MongoDB的教程,它以MongoDB的3.0版本进行说明。本教程安装的是MongoDB Windows 64位版本,目的只是为了让读者快速的入门MongoDB,快速理解和操作MongoDB。在开发或生产中强烈要求...
### MongoDB入门到精通知识点概述 #### 一、MongoDB简介 MongoDB是一种开源的文档数据库,采用JSON格式存储数据,并提供了高性能、高可用性和自动扩展的能力。它属于NoSQL数据库的一种,非常适合处理大规模数据和...
### MongoDB入门学习知识点详解 #### 一、MongoDB简介与特点 MongoDB是一种非常流行的开源文档型NoSQL数据库系统,以其高性能、高可用性及易扩展性而著称。相较于传统的关系型数据库如MySQL、Oracle等,MongoDB...
MongoDB允许创建多个数据库,数据库名有一些限制,如不能包含空格、\0字符、点、斜线和美元符号,并应全小写。 MongoDB提供了丰富的操作命令,如`use`用于切换数据库,`show dbs`显示所有数据库,`db.dropDatabase...
MongoDB 入门教程笔记
4. **良好的支持**:MongoDB拥有丰富的驱动程序支持多种编程语言,并有一个活跃的社区。 在配置和安装MongoDB时,通常需要准备一个Linux环境。本文中以CentOS 6.7为例,下载MongoDB的3.2.4版本,通过`tar`命令解压...
1.mongodb-win32-i386-2.4.8.zip 由于大小限制,请到官网下载http://www.mongodb.org/downloads 2.MongoDB开发使用手册.docx ...4.MongoDB入门经典.doc 5.MougoTest.rar(MongoDB入门经典.doc用例)
day4:教你学会MongoDB聚合操作 day5:索引的特性及应用 day6:MongoDB实例搭建仓位管理API day7:数据模型优化及设计 day8:复制集介绍及演练 day9:海量数据分片 day10:数据库认证与授权介绍及演练 day11:MongoDB数据库...