MongoDB数据库设计中6条重要的经验法则

MongoDB 模式设计进阶案例_页面_35

MongoDB数据库设计参考指标

  • MongoDB默认占用50%内存,可适当调节
  • Document文档最大16MB
    故设计的时候不要造成文档过大,尤其注意有数组的时候这个数组是不是可以无限push
  • Document中对数组的$elemMatch操作,其delete,push,pop性能巨差
    当文档中的数组大到一定程度,对数组中元素的delete,push,pop操作性能巨差
    尽量保证文档中数组的数量较少或者固定数组的数量
  • Document物理迁移,性能巨差

下面这些是你需要谨记的:

1、优先考虑内嵌,除非有什么迫不得已的原因。

2、需要单独访问一个对象,那这个对象就不适合被内嵌到其他对象中。

3、数组不应该无限制增长。如果many端有数百个文档对象就不要去内嵌他们可以采用引用ObjectID的方案;如果有数千个文档对象,那么就不要内嵌ObjectID的数组。该采取哪些方案取决于数组的大小。

4、不要害怕应用层级别的join:如果索引建的正确并且通过投影条件(第二章提及)限制返回的结果,那么应用层级别的join并不会比关系数据库中join开销大多少。

5、在进行反范式设计时请先确认读写比。一个几乎不更改只是读取的字段才适合冗余到其他对象中。

6、在mongodb中如何对你的数据建模,取决于你的应用程序如何去访问它们。数据的结构要去适应你的程序的读写场景。

设计指南

当你在MongoDB中对“一对多”关系进行建模,你有很多的方案可供选择,所以你必须很谨慎的去考虑数据的结构。下面这些问题是你必须认真思考的:

关系中集合的规模有多大:是一对很少,很多,还是非常多?

对于一对多中”多“的那一端,是否需要单独的访问它们,还是说它们只会在父对象的上下文中被访问。

被冗余的字段的读写的比例是多少?

数据建模设计指南

在一对很少的情况下,你可以在父文档中内嵌数组。

在一对很多或者需要单独访问“N”端的数据时,你可以采用数组引用ObjectID的方式。如果可以加速你的访问也可以在“N”端使用父引用。

在一对非常多的情况下,可以在“N”端使用父引用。

如果你打算在你的设计中引入冗余等反范式设计,那么你必须确保那些冗余的数据读取的频率远远大于更新的频率。而且你也不需要很强的一致性。因为反范式化的设计会让你在更新冗余字段时付出一定的代价(更慢,非原子化)

总结

三种基础方案:内嵌文档,子引用,父引用的补充选择。

使用双向引用来优化你的数据库架构,前提是你能接受无法原子更新的代价。

可以在引用关系中冗余数据到one端或者N端。

在决定是否采用反范式化时需要考虑下面的因素:

你将无法对冗余的数据进行原子更新。

只有读写比较高的情况下才应该采取反范式化的设计。

Linux安装nodejs环境以及路径配置

linux安装nodejs有2种方式一种简单的,解压即可用;另一种,通过下载source code ,通过编译,make,make install命令来安装。

这里只讲第一种,简单方便。不需要执行mak、make install。步骤如下:

一、确定你使用的linux系统,让问 https://nodejs.org/en/download/ 然后下载响应的压缩包。这里我下载的是node-vxx.xx.xx-linux-x64.tar.xz

wget    node-vxx.xx.xx-linux-x64.tar.xz

二、上传到linux相关路径下,一般是/usr/local/,并执行如下命令

xz -d node-xxxx.tar.xz —将tar.xz解压成tar文件

tar -xvf node-xxxx.tar —将tar文件解压成文件夹

mv node-xxx node —-改文件夹的名字,改成node

三、检查是否可以安装成功

./node -v

四、配置软连接,使全局都可以使用node命令

ln -s /usr/local/node/bin/node /usr/bin/node  –将node源文件映射到usr/bin下的node文件

ln -s /usr/local/node/bin/npm /usr/bin/npm

五、配置node文件安装路径

进入/usr/local/node/路径下:

mkdir node_global

mkdir node_cache

npm config set prefix “node_global”

npm config set cache “node_cache”

 

六、当你觉得npm慢的时候,可以安装cnpm

npm install cnpm -g –registry=https://registry.npm.taobao.org

顺便可以检查一下-g这个全局安装有没有按照之前设置的,安装到node_global文件下。

如下全局使用cnpm,也要记得配置一个软连接。

检查 /usr/local/node/node_global/lib/node_modules/cnpm 目录是否存在

 

 

 

Ubuntu中安装MySQL,更改默认用户密码

第一步:进入目录:cd /etc/mysql,查看debian.cnf文件

第二步:使用上图中的账号密码登录MySQL。

第三步:查看数据库中的库。

第四步:使用mysql库。

第五步:使用一下语句设置账号密码:update user set authentication_string=PASSWORD(“自定义新密码”) where user=’root’;

我个人设置的简单。账号为:root。 密码:123456.

第六步:执行一下语句:update user set plugin=”mysql_native_password”;

第七步:刷新:flush privileges;

第八步:退出:quit;

第九步:修改密码完成。在命令框中输入:/etc/init.d/mysql restart; 重启MySQL


最后 一步:再次登录。恭喜你更改默认密码成功。

来源:https://www.cnblogs.com/Tdazheng/p/10742929.html