Tuesday, December 31, 2013

Un DBA MySQL mira PostgreSQL

Original post: http://anothermysqldba.blogspot.com/2013/12/a-mysql-dba-looks-at-postgresql.html

Así que este es un viaje del / a MySQL DBA mirar en PostgreSQL . No es un ataque sólo observaciones y ejemplos. 

El uso de CentOS 6.5 de 64 bits: 

rpm-ivh http://yum.postgresql.org/9.3/redhat/rhel-6.5-x86_64/pgdg-centos93-9.3-1.noarch.rpm

ñam groupinstall "Base de datos PostgreSQL Server 9.3 PGDG" 
Se instalarán ---> Paquete postgresql93.x86_64 0:9.3.2-1PGDG. RHEL6 
---> Se instalará postgresql93-contrib.x86_64 Paquete 0:9.3.2-1PGDG. RHEL6 
---> Se instalará postgresql93-libs.x86_64 Paquete 0:9.3.2-1PGDG. RHEL6 
 
---> Se instalará Paquete postgresql93-server.x86_64 0:9.3.2-1PGDG. RHEL6 

yum install postgresql93-servidor 

servicio postgresql-9.3 initdb 
Base de datos Inicialización: [OK] 
postgresql-9.3 puesta en servicio 
A partir postgresql-9.3 servicio: [OK] 
chkconfig postgresql-9.3 en 

Todos los siguientes ejemplos se basan en el PostgreSQL Wiki 
# Su - postgres 
-Bash-4.1 $ psql 
 
psql (9.3.2) 

postgres = # CREAR USUARIO CONTRASEÑA testuser '1234 '; 
CREATE ROLE 
postgres = # GRANT ALL ON SCHEMA prueba por TestUser; 
GRANT 

postgres = # GRANT ALL ON todas las tablas de prueba SCHEMA por TestUser; 
GRANT 
postgres = # \ q
-Bash-4.1 $ exit
logout
# Su testuser

$ Pwd 
/ Home / testuser 
$ psql-d postgres 
psql (9.3.2) 

Escriba "help" para obtener ayuda. 
postgres => CREATE test.test MESA (varchar COLTEST (20));
CREATE TABLE
postgres => insertan en test.test valores (COLTEST) ('It works!');
INSERT 0 1
postgres => SELECT * FROM test.test;
COLTEST
-----------
¡Funciona!
(1 row)

postgres => test.test DROP TABLE;
DROP TABLE
postgres =>

Me di cuenta de que estas declaraciones de subvención trabajaron bien con 9.3 pero la distro originalmente instalado una versión 8. * Y algunos de los comandos fallé. 

Por cierto ... Usted, por supuesto, todavía tiene las características que usted esperaría de un sistema RDBM estable.Concedidos estos son ejemplos sencillos. 

postgres => EXPLAIN SELECT * de test.test; 
PLAN DE CONSULTA 
-------------------------------------------------- ------ 
Sec. Scan en la prueba (cost = 0.00 .. 19.20 rows = 920 width = 58) 

Mostrar bases de datos == \ l 
postgres-> \ l 
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / postgres + 
| | | | | Postgres = TACc / postgres 
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | = c / postgres + 

| | | | | Postgres = TACc / postgres 

USO es el estándar SQL: 
postgres-> Usar postgres 

Enumerar todos los esquemas: 

postgres-> \ dn 
públicas | postgres 

prueba | postgres 

SHOW CREATE TABLE y etc, son un poco más de trabajo. Concedido un DBA MySQL lo verá como más trabajo, porque de lo que estamos acostumbrados a hacer. PostgreSQL utiliza espacios de tabla más de usuarios de MySQL están acostumbrados a hacer.

  postgres => CREATE sometable MESA (varchar SomeField (255), varchar anotherfield (150), fecha datefield); 
  CREATE TABLE 
  postgres => INSERT INTO VALORES sometable (SomeField, anotherfield, DateField) ('fubar', 'rabuf', '2013-12-30 '); 
  INSERT 0 1 
  postgres => INSERT INTO VALORES sometable (SomeField, anotherfield, DateField) ('fubar', 'rabuf', NOW ()); 
  INSERT 0 1 
  postgres => INSERT INTO VALORES sometable (SomeField, anotherfield, DateField) ('fubar2', 'rabuf2', NOW ()); 
  INSERT 0 1 
  postgres => select * from sometable; 
   SomeField | anotherfield | datefield   
  ----------- + -------------- + ------------ 
   fubar | rabuf | 30/12/2013 
   fubar | rabuf | 30/12/2013 
   fubar2 | rabuf2 | 12/30/2013 
  (3 filas) 

postgres => select * from sometable DONDE SomeField = 'fubar'; SomeField | anotherfield | datefield ----------- + -------------- + ---- -------- fubar | rabuf | 30/12/2013 fubar | rabuf | 12/30/2013 (2 filas)

postgres => \? <- La ayuda que le mostrará cómo navegar alrededor.

Mostrar las tablas == \ dt

postgres => \ dt
Lista de las relaciones
Esquema | Nombre | Tipo | Propietario
-------- + ----------- + ------- + ----------
público | sometable | Mesa | testuser

postgres => ALTER TABLE ADD COLUMN sometable intfield int [11]; ALTER TABLE

postgres => select * from sometable; SomeField | anotherfield | datefield | intfield ----------- + -------------- + -------- ---- + ---------- fubar | rabuf | 12/30/2013 | fubar | rabuf | 12/30/2013 | fubar2 | rabuf2 | 12/30/2013 | (3 filas)

Mostrar create table == \ d + nombre de tabla
postgres => \ d + sometable
Tabla "public.sometable"
Columna | Tipo | Modificadores | Almacenamiento | Estadísticas destino | Descripción
-------------- + ------------------------ + ---------- - + ---------- + -------------- + -------------
SomeField | carácter variable (255) | | ampliada | |
anotherfield | carácter variable (150) | | ampliada | |
datefield | Fecha | | llano | |
intfield | entero [] | | ampliada | |
Tiene OID: no


Para ayudar a que más puede instalar pgadmin
yum install pgadmin3_93

Conseguir que para trabajar y cómo funciona podría ser otro post entero blog.

Hasta ahora .... Me quedo con MySQL, pero esto es sólo un ejemplo simplista de usar PostgreSQL. Esto puede ayudarle a empezar a usted puede evaluar por sí mismo.

Enlaces Útiles abajo. Por favor refiérase a estos, ya que tienen más experiencia con PostgreSQL que yo.