Cet article est le quatrième jour du Calendrier de l'Avent PostgreSQL 2015. Le troisième jour était kasa_zip.
Le domaine de l'analyse des données a été très occupé ces dernières années. Spark / Hadoop peut être nécessaire à grande échelle, mais le SGBDR est suffisant pour une certaine échelle. En particulier, PostgreSQL a un support JSON abondant, donc une plate-forme d'analyse de taille moyenne serait suffisante.
Alors, organisons les modules de pilotes pour se connecter à PostgreSQL à partir de chaque langue.
Le pilote JDBC PostgerSQL est fourni, alors utilisons-le. download
Lors du choix du pilote JDBC à utiliser, choisissez en fonction de la version JDK de l'environnement d'exécution. Par exemple, JDK 1.8 nécessite un pilote JDBC42, utilisez donc l'un des 9.4 build 1202-1206. Le protocole de communication de PostgreSQL est car il est commun à 7.4 ou version ultérieure, et même si vous utilisez le pilote de 9.4, vous pouvez vous connecter à PostgreSQL 7.4 ou version ultérieure. Il n'y a pas de problème. Vous devez utiliser le dernier pilote prenant en charge le JDK que vous utilisez.
Puisque le pilote JDBC pour PostgreSQL est Pure Java, il ne nécessite pas de libpq et fonctionne indépendamment, donc seul le pilote téléchargé doit être ajouté au CLASSPATH.
Dans le cas de Python, il est organisé en PostgreSQL wiki.
Comme vous pouvez le voir dans le tableau, Python fournit plusieurs pilotes. Entendez-vous souvent le nom dans les trois domaines suivants?
En regardant le nombre de DL, pyscopg2 est écrasant. En fait, il a été beaucoup utilisé, et il est facile à utiliser car il est compatible avec les deux séries Python 2/3. Cependant, psycopg2 dépend de ** libpq **, donc un package tel que postgresql-devel est requis.
D'un autre côté, pg8000 et py-postgresql sont implémentés en Pure Python, donc libpq n'est pas nécessaire. À cet égard, le coût d'introduction est faible, mais ** pg8000 ** prend en charge la ** série Python2 ** uniquement </ del> ** py-postgresql ** prend en charge ** la série Python3 uniquement ** Veuillez noter que.
S'il s'agit d'un outil simple, le pilote PurePython est plus simple, mais compte tenu de la stabilité, etc., il semble sûr d'utiliser ** psycopg2 **.
En passant, dans le postgres-toolkit publié par @snaga, [PsqlWrapper.py](https: // github. Une bibliothèque est implémentée qui analyse et renvoie la sortie standard sous une forme facile à utiliser tout en émettant du SQL via psql sous le nom com / uptimejp / postgres-toolkit / blob / develop / lib / PsqlWrapper.py). Si vous créez personnellement un outil léger qui fonctionne avec PostgreSQL, une telle implémentation peut être une option.
Lors de la connexion à PostgreSQL avec Node.js, node-postgres est souvent utilisé. Il s'agit d'une implémentation de Pure Javascript, vous pouvez donc l'installer ci-dessous.
$ npm install pg
De plus, node-postgres a également ** pg-native ** qui utilise libpq, mais dans de nombreux cas, il semble qu'il soit utilisé par ** pg **. node-postgres renvoie le résultat de l'acquisition au format JSON.
[
{
"empno": "7369",
"ename": "SMITH",
"job": "CLERK",
"mgr": "7902",
"hiredate": "1980-12-17T00:00:00.000Z",
"sal": "800.00",
"comm": null,
"deptno": "20"
},
{
"empno": "7499",
"ename": "ALLEN",
"job": "SALESMAN",
"mgr": "7698",
"hiredate": "1981-02-20T00:00:00.000Z",
"sal": "1600.00",
"comm": "300.00",
"deptno": "30"
}
]
Le format est assez intuitif, mais le type JSON et le type JSONB ajoutés dans 9.1 et versions ultérieures sont également les suivants. Il sera retourné au format JSON.
sample_db=# create table json_test(json_col json);
CREATE TABLE
sample_db=# insert into json_test values('{"A":{"B":[1,2,3]}}'::json);
INSERT 0 1
sample_db=# insert into json_test values('{"C":{"D":[4,5]}}'::json);
INSERT 0 1
[
{
"json_col": {
"A": {
"B": [
1,
2,
3
]
}
}
},
{
"json_col": {
"C": {
"D": [
4,
5
]
}
}
}
]
Quand il s'agit de Node.js, le back-end est souvent MongoDB, mais PostgreSQL est également bien adapté pour Node.js.
Vous pouvez également vous connecter à PostgreSQL depuis .NET en utilisant Npgsql. Vous pouvez l'obtenir via Nuget. Npgsql est pur C #, donc il ne nécessite pas de libpq. C'est bien car parfois c'est un peu fastidieux de préparer PostgreSQL dans un environnement Windows.
Comme il est compatible avec ADO.NET, si vous avez utilisé ADO.NET avec d'autres bases de données, vous pouvez l'utiliser sans aucune hésitation.
Au fait, Mono semble fonctionner, mais je ne l'ai pas essayé ...
Puisque la fonction PostgreSQL est préparée pour php, vous l'utiliserez. Notez que php doit être compilé avec l'option ** —with-pgsql ** pour l'utiliser. De plus, ** —with-pdo-pgsql ** est requis lors de l'utilisation via PDO. Comme cela dépend de libpq, il est nécessaire d'installer un paquet tel que postgresql-devel séparément.
Vous pouvez vérifier si PostgreSQL peut être utilisé via des fonctions PostgreSQL ou PDO avec PHP qui a déjà été introduit en utilisant `` Php phpinfo ()?> ''.
Vous pouvez également vérifier les options de compilation de ** php-config **.
Exemple d'exécution
$ ./php-config --configure-options
--prefix=/home/sample/apps/php ...--with-pgsql=/home/sample/posgrehome --with-pdo-pgsql=/home/sample/posgrehome
Il semble que Ruby utilise souvent le module ruby-pg. Cela semble également être une implémentation qui utilise libpq, vous devez donc installer un paquet tel que postgresql-devel séparément.
gem install pg
De plus, si vous construisez PostgreSQL à partir des sources, installez-le dans un répertoire différent de celui habituel, et ce sera moss lorsque vous installerez ruby-pg. Dans ce cas, spécifiez le chemin vers ** pg_config ** comme suit. (Il est également écrit dans le manuel)
gem install pg -- --with-pg-config=<path to pg_config>
En gros, j'ai résumé l'histoire de l'utilisation de PostgreSQL à partir de plusieurs langues. Il existe un ensemble complet de pilotes pour les principaux langages, donc si vous n'avez pas encore utilisé PostgreSQL, pourquoi ne pas l'essayer?
Le responsable du Calendrier de l'Avent PostgreSQL 2015 Jour 5 est nuko_yokohama.
Recommended Posts