您好,1)用户实用程序:
createdb 创建一个新的PostgreSQL的数据库(和SQL语句:CREATE database 相同)
createuser 创建一个新的PostgreSQL的用户(和SQL语句:CREATE USER 相同)
dropdb 删除数据库
dropuser 删除用户
pg_dump 将PostgreSQL数据库导出到一个脚本文件
pg_dumpall 将所有的PostgreSQL数据库导出到一个脚本文件
pg_restore 从一个由pg_dump或pg_dumpall程序导出的脚本文件中恢复PostgreSQL数据库
psql 一个基于命令行的PostgreSQL交互式客户端程序
vacuumdb 清理和分析一个PostgreSQL数据库,它是客户端程序psql环境下SQL语句VACUUM的shell脚本封装,二者功能完全相同
(2)系统实用程序
initdb 创建一个用于存储数据库的PostgreSQL数据目录,并创建预定义的模板数据库template0和template1,生成共享目录表 catalog;此程序通常只在安装PostgreSQL时运行一次
initlocation 创建一个辅助的PostgreSQL数据库存储区域
ipcclean 从停止的PostgreSQL服务器中清除共享内在和孤立信号标志
pg_ctl 启动、停止、重启PostgreSQL服务(比如:pg_ctl start 启动PostgreSQL服务,它和service postgresql start相同)
pg_controldata 显示PostgreSQL服务的内部控制信息
postgres PostgreSQL单用户模式的数据库服务
postmaster PostgreSQL多用户模式的数据库服务
4.这里面最重要的是psql这个客户端程序最为重要。启用客户端程序psql的方法是:
切换到PostgreSQL预定义的数据库超级用户postgres,启用客户端程序psql,并连接到自己想要的数据库,比如说:
psql template1
出现以下界面,说明已经进入到想要的数据库,可以进行想要的操作了。
template1=#
5.在数据库中的一些命令:
template1=# \l 查看系统中现存的数据库
template1=# \q 退出客户端程序psql
template1=# \c 从一个数据库中转到另一个数据库中,如template1=# \c sales 从template1转到sales
template1=# \dt 查看表
template1=# \d 查看表结构
template1=# \di 查看索引
6.要注意随时对数据库进行清理、收回磁盘空间并更新统计信息,使用下面的命令就搞定!
vaccumdb -d sales -z
-a 对所有的数据库操作
-z 保证不断地删除失效的行,节约磁盘空间,将统计信息更新为最近的状态
7.PostgreSQL用户认证
PostgreSQL数据目录中的pg_hba.conf的作用就是用户认证,可以在/var/lib/pgsql/data中找到。
有以下几个例子可以看看:
(1)允许在本机上的任何身份连接任何数据库
TYPE database USER IP-addRESS IP-MASK method
local all all trust(无条件进行连接)
(2)允许IP地址为192.168.1.x的任何主机与数据库sales连接
TYPE database USER IP-addRESS IP-MASK method
host sales all 192.168.1.0 255.255.255.0 ident sameuser(表明任何操作系统用户都能够以同名数据库用户进行连接)
8.看了那么多,来一个完整的创建PostgreSQL数据库用户的示例吧
(1)进入PostgreSQL高级用户
(2)启用客户端程序,并进入template1数据库
psql template1
(3)创建用户
template1=# CREATE USER hellen WITH ENCRYPED password'zhenzhen'
(4)因为设置了密码,所以要编辑pg_hba.conf,使用户和配置文件同步。
在原有记录上面添加md5
local all hellen md5
(4)使用新用户登录数据库
template1=# \q
psql -U hellen -d template1
PS:在一个数据库中如果要切换用户,要使用如下命令:
template1=# \!psql -U tk -d template1
9.设定用户特定的权限
还是要用例子来说明:
创建一个用户组:
sales=# CREATE group sale;
添加几个用户进入该组
sales=# alter group sale add USER sale1,sale2,sale3;
授予用户级sale针对表employee和products的select权限
sales=# grant select on employee,products TO group sale;
在sale中将用户user2删除
sales=# alter GROP sale DROP USER sale2;
10.备份数据库
可以使用pg_dump和pg_dumpall来完成。比如备份sales数据库:
pg_dump sales>/home/tk/pgsql/backup/1.bak
但是由于“大数据”和“hadoop”这两个热门词,即使很多人实际上不需要hadoop,他们也愿意穿上“紧身衣”。
一、如果我的数据量是几百兆,excel可能没法加载它
对于excel软件来说的“很大的数据”并非大数据,其实还有其它极好的工具可以使用——我喜欢的pandas。pandas构建于numpy库 之上,可以以矢量格式的方式有效地把数百兆的数据载入到内存中。在我购买已3年的笔记本上,它可以用numpy在一眨眼的功夫把1亿的浮点数乘在一起。 matlab和r也是极好的工具。
对于几百兆的数据量,典型的做法是写一个简单的python脚本按行读取文件行,并处理它,向另一个文件写入。
二、如果我的数据是10gb呢
我买了个新笔记本,它有16gb的内存和256gb的ssd。如果你要载入一个10gb的csv文件到pandas,它占用的内存实际上是很小的 ——其结果是以数字类型的字符串保存的,如“17284832583”作为4字节货8字节的整数,或存储“284572452.2435723”字符串作 为8字节的双精度浮点数。
最坏的情况是你或许不能把所有的数据都同时载入到内存中。
三、如果我的数据是100gb、500gb或1tb呢
买个2tb或4tb的硬盘,在桌面pc或服务器上安装一个postgre来解决它。
四、hadoop远远比不上sql或python脚本
在计算的表达方面,hadoop弱于sql,也弱于python脚本。
sql是一个很直接的查询语言,适合做业务分析,sql的查询相当简单,而且还非常快——如果你的数据库使用了正确的索引,二级查询或多级查询另当别论。
hadoop没有索引的概念,hadoop只有全表扫描,hadoop有高度泄露抽象——我花了很多时间来处理java的内存错误、文件碎片以及集群竞争,这些时间远大于我花在数据分析上的时间。
如果你的数据并不是像sql表那样的结构化数据(比如纯文本、json对象、二进制对象),通常是直接写一个小的python脚本来按行处理你的数据。把数据存储于文件,处理每一个文件,等等。如果换成是hadoop就很麻烦。
相比于sql或python脚本,hadoop要慢的多。正确的使用索引后,sql查询总是非快——postgresql简单的查找索引,检索确 切的键值。而hadoop是全表扫描的,它会把整个表进行重新排序。通过把数据表分片到多台计算机上后,重排序是很快的。另一方面,处理二进制对 象,hadoop需要重复往返于命名节点,目的是查找和处理数据。这适合用python脚本来实现。
五、我的数据超过了5tb
你应该考虑使用hadoop,而无需做过多的选择。
使用hadoop唯一的好处是可伸缩性非常好。如果你有一个包含了数tb数据的表,hadoop有一个适合全表扫描的选项。如果你没有这样大数据量的表,那么你应该像躲避瘟疫那样避免使用hadoop。这样使用传统的方法来解决问题会更轻松。
六、hadoop是一个极好的工具
我并不讨厌hadoop,当我用其它工具不能很好处理数据时我会选择hadoop。另外,我推荐使用scalding,不要使用hive或pig。scalding支持使用scala语言来编写hadoop任务链,隐藏了其下的mapreduce。
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....