Metodos para mantener en cache información que no cambiará muy seguido, y que no es necesario saturar la BD de consultas .
<?php
include 'mysql.php';
global $memcache;
$memcache = new Memcache;
$memcache->pconnect('localhost',11211) or die("Conexión lenta...");
function Get_memcache($key) {
global $memcache;
return ($memcache) ? $memcache->get($key) : false;
}
function Set_memcache($key,$object) {
global $memcache;
$timeout = 432000; //5dias
return ($memcache) ?
$memcache->set($key,$object,MEMCACHE_COMPRESSED,$timeout) : false;
}
function Go_memcache($key) {
global $memcache;
//Limpiar toda la cache : $memcache->flush();
$identificador = md5("mysql" . $key);
$cache = Get_memcache($identificador);
if (!($cache)) {
// echo "dentro";
$db = new MySQL();
$rs = $db->consulta(Querysql($key));
if ($rs){
for ($data = array (); $row = $rs->fetch_assoc(); $data[] = $row);
Set_memcache($identificador,$data);
$cache = Get_memcache($identificador);
}
}
return $cache;
}
function Querysql($key){
$sql = null;
if($key==="planes")
$sql= "SELECT * FROM TABLA1";
elseif($key==="sedes")
$sql= "SELECT * FROM TABLA2 ";
return $sql;
}
Desde el 2012 llevo mis apuntes en este blog documentando lecciones aprendidas, formatos, procesos, negocios, metodologías, herramientas, guias y buenas prácticas para el mundo informativo y la gestión de proyectos. Habilidades blandas, habitos, frases de líderes, empresarios exitosos y apuntes personales que son el resultado de investigaciones que realizo para mejorar cada día en el ambito personal y profesional.
Mostrando entradas con la etiqueta datos. Mostrar todas las entradas
Mostrando entradas con la etiqueta datos. Mostrar todas las entradas
Conectar a una BD mysql desde SQL SERVER con servidores vinculados
Escenario :
Tengo un servidor principal con SQL Server como manejador de
base de datos. Adicionalmente, tengo un servidor Linux (con redhat) con un
sistema en php que conecta a una base de datos MySQL instalada en dicho terminal. El problema : Necesito pasar información de
SQL a Mysql de 2 a 4 veces por día.
¿Como hago para pasar toda la información y que se mantenga en la capa
de Datos ?. Después de varios días de investigación y de haber encontrado 3
posibles soluciones sin salir de la capa de datos ( freetds era una muy buena
opción, ejecuciones con procesos en segundo plano bajo en cron de linux) , he
optado por solucionar el problema con lo que me parece la manera mas elegante y
certera. servidores vinculados.
¿Qué es un servidor vinculado?
Su nombre lo dice todo, agrego una BD externa al SQL y la
hago accesible, con esto puedo hacer todo tipo de consultas tipo transac
sql.
EMPEZAMOS
1. Instala
los driver que te permite manejar la base Mysql. Entonces bajar el conector ODBC para mysql
http://dev.mysql.com/downloads/connector/odbc/
2. Luego de
instalarlo debemos configurarlo, creamos el odbc y lo configuramos:
Yo tengo el sql server 2005 :
Entra al "Panel de Control" y busca
"Herramientas Administrativas". Entra en este y aparecerá
"Orígenes de datosODBC".

Se abrirá la siguiente ventana. Busca el botón
"Agregar".
Clic sobre Mysql ODBC 3.51 driver (que es lo que instalaste
en el paso 1). Luego sobre finalizar.

Se abre el conector ODBC del MySQL. En este debes definir
los parámetros de conexión a tu base de datos MySQL. Simplemente agrega el
nombre de tu servidor, tu user y password. No olvides colocar el nombre de la
conexión (DataSource Name). Lo vamos a usar en el Paso 3. Sugiero
"MySQL_LINK".

3. Vincular
Mysql con SQL Server 2005
En el administrador
corporativo del SQL Server 2005 buscas
la opción "Objetos del servidor". Dentro existe una subcarpeta
llamada "Servidores vinculados".

clic derecho sobre Servidores vinculados y buscamos la
opción "Nuevo servidor vinculado".

Se abre la ventana "Nuevo servidor vinculado" y
colocas los parámetros para conectarse con la base MySQL.
Marcas la opción "Otro origen de datos" . Debes
colocar los siguientes parámetros.
Servidor vinculado : LINKED_MYSQL (coloca el nombre que
desees)
Proveedor :
Microsoft OLE DB Provider for ODBC Drivers.
Nombre del Producto : MySQL
Origen de datos : MySQL_LINK (Ojo: Este es el nombre del
ODBC que creaste en el paso 2, colocale el que tu hayas colocado.)
Cadena de proveedor : ODBC:DSN=MySQL_LINK::Table=aaa (el
valor aaa es una tabla de la base MySQL, coloca cualquiera de las tablas de tu
base. DSN es el nombre del ODBC que creaste en el paso 2)
Catálogo : pyp1 (nombre de la base de datos a la cuál
quieras conectarte)

Dentro de la misma ventana, clic en la ficha
"Seguridad" para que establecer con que user y password nos vamos a
conectar. Clic en "Se establecerán usando este contexto de seguridad"
y colocamos el user y password. Luego clicen el botón "Aceptar". Eso
es todo, ya tenemos vinculado nuestro servidor MySQL con SQL 2005.

4. Hacer consultas
SQL en el servidor vinculado.
Ubicación : En el servidor central donde esta la base SQL
Server 2005
Vayamos a probar si podemos hacer consultas en MySQL.
Ejecutamos exec sp_Tables_Ex 'LINKED_MYSQL' (Devolvemos
información acerca de las tablas de el servidor que hemos vinculado.LINKED_MYSQL
es el nombre del servidor vinculado que hemos creado). Se deben mostrar las
tablas del servidor vinculado.

Veamos algunos ejemplos de sentencias SQL con openquery.
¿Si quiero mostrar datos de las tablas?
select *
from openquery (LINKED_MYSQL,'select * from aaa')
¿Si quiere eliminar los datos de un tabla?
Delete
openquery (LINKED_MYSQL,'select * from aaa'). ¡Borramos todos los datos
de la tabla 'aaa'!
¿Si quiero insertar datos en dicha tabla?
insert into
openquery(LINKED_MYSQL,'select * FROM aaa')
(Field1,
Field2,...)
SELECT
Field1, Field2,...
FROM Tabla
¿Y para
actualizar datos?
Update
openquery(LINKED_MYSQL,'Select * from aaa') SET Cod_Ind = 7
WHERE Cod_Ind = 7.5
http://www.forosdelweb.com/f21/como-hacer-insert-liskserver-por-openquery-238208/
Suscribirse a:
Entradas (Atom)
