Category Archives: DataBase

Mac OS Xにmongodbをインストールする

MacPorts
$ sudo port install mongodb

Homebrew
$ brew install mongodb

/var/lib/mongodbを作成
$ sudo mkdir /var/lib/mongodb

/var/log/mongodb.logを作成
$ sudo touch /var/log/mongodb.log

mongodbを起動する

$ sudo mongod –dbpath /var/lib/mongodb –logpath /var/log/mongodb.log
$ mongo

mongodbを停止する方法

方法1
>use admin;
switched to db admin
>db.shutdownServer();
Tue Nov 18 11:03:24.164 DBClientCursor::init call() failed
server should be down…
Tue Nov 18 11:03:24.169 trying reconnect to 127.0.0.1:27017
Tue Nov 18 11:03:24.171 reconnect 127.0.0.1:27017 failed couldn’t connect to server 127.0.0.1:27017
> exit
bye

方法2
kill -15,killall mongod

MongoDB入門–eval()関数の使い方

サンプルコード:
var h1 = 8, h2=16;
var ctm = “(function() {\n”
+” var hh = this.createdAt.getHours();\n”
+” if (hh >= “+h1 + “&& hh <= “+h2
+” )\n”
+” return true;\n”
+”})”;
console.log(ctm);
var resultobj = eval(ctm);
Resource.findOne({$where:resultobj,account:”xxxxxxx”},function(err,docs){
console.log(err,docs);
})

PostgreSQLでUNION/INTERSECT/EXCEPT/ALLの使い方

1.UNION
2つtable以上のSELECT結果をまとめる
SELECT * FROM [テーブル1] UNION SELECT * FROM [テーブル2];

2.INTERSECT
2つtable以上のSELECT結果の共通データを抽出
SELECT * FROM [テーブル1] INTERSECT SELECT * FROM [テーブル2];

3.EXCEPT
2つtable以上のSELECT結果の共通データ以外を抽出
SELECT * FROM [テーブル1] EXCEPT SELECT * FROM [テーブル2];

4.ALL
重複を許可する場合ALLを使用
SELECT * FROM [テーブル1] UNION ALL SELECT * FROM [テーブル2];

PostgreSQL 9.xで関数の作成サンプルコード

サンプルコード

CREATE FUNCTION FUNCTION_DEAL(refcursor) RETURNS refcursor AS $$
declare r record;
ref refcursor;
ff varchar:=’SELECT “CFTAA”,’;

begin
for r in select distinct “CFTBB” from ttm loop
ff:=ff || ‘max(case when “CFTBB”=”’||r.”CFTBB” || ”” || ‘ then “CFTCCC” ‘ || ‘ end ) as ‘ ||r.”CFTBBB” || ‘ ,’;
RAISE NOTICE ‘123(%)’, ff;
end loop;
ff:=substr(ff,1,length(ff)-1) || ‘ from ttm group by “CFTAA”‘;
open $1 for execute ff;
return $1;
end;

$$ LANGUAGE plpgsql;

「基礎入門」MongoDBデータバックアップ、リストアおよび移行管理

1.全てのデータベースをバックアップ
mkdir testbak
cd testbak
mongodump
ディレクトリ:./dump/[databasename]/[collectionname].bson

2.指定データベースをバックアップ
mongodump -d pagedb

3.データベースのコレクションをバックアップ
mongodump -d pagedb -c page

4.全てのデータベースを復元
cd testbak
mongorestore –drop

5.指定DBのデータを復元
cd testbak
mongorestore -d pagedb –drop

6.指定DBのコレクションのデータを復元
cd testbak
mongorestore -d pagedb -c page –drop

7.MongoDBにデータをインポート
mongoimport -d pagedb -c page –type csv –headerline –drop < csvORtsvFile.csv
ヘルプ参考
mongoimport –help
options:
–help produce help message
-v [ –verbose ] be more verbose (include multiple times for more
verbosity e.g. -vvvvv)
-h [ –host ] arg mongo host to connect to ( /s1,s2 for sets)
–port arg server port. Can also use –host hostname:port
–ipv6 enable IPv6 support (disabled by default)
-u [ –username ] arg username
-p [ –password ] arg password
–dbpath arg directly access mongod database files in the given
path, instead of connecting to a mongod server –
needs to lock the data directory, so cannot be used
if a mongod is currently accessing the same path
–directoryperdb if dbpath specified, each db is in a separate
directory
-d [ –db ] arg database to use
-c [ –collection ] arg collection to use (some commands)
-f [ –fields ] arg comma separated list of field names e.g. -f name,age
–fieldFile arg file with fields names – 1 per line
–ignoreBlanks if given, empty fields in csv and tsv will be ignored
–type arg type of file to import. default: json (json,csv,tsv)
–file arg file to import from; if not specified stdin is used
–drop drop collection first
–headerline CSV,TSV only – use first line as headers
–upsert insert or update objects that already exist
–upsertFields arg comma-separated fields for the query part of the
upsert. You should make sure this is indexed
–stopOnError stop importing at first error rather than continuing
–jsonArray load a json array, not one item per line. Currently
limited to 4MB.

8.MongoDBからデータをエクスポート
mongoexport -d pagedb -c page -q {} -f _id,title,url,spiderName,pubDate –csv > pages.csv
クエリ条件を指定する場合、下記を実行する
mongoexport -d page -c Article -q ‘{“spiderName”: “mafengwoSpider”}’ -f _id,title,content,images,publishDate,spiderName,url –jsonArray > mafengwoArticle.txt

9.リモート接続管理

9.1 mongoでリモート接続
mongo -u admin -p admin 192.168.0.199:27017/pagedb
ヘルプコマンド
mongo –help
MongoDB shell version: 1.8.3
usage: mongo [options] [db address] [file names (ending in .js)]
db address can be:
foo foo database on local machine
192.169.0.5/foo foo database on 192.168.0.5 machine
192.169.0.5:9999/foo foo database on 192.168.0.5 machine on port 9999
options:
–shell run the shell after executing files
–nodb don’t connect to mongod on startup – no ‘db address’
arg expected
–quiet be less chatty
–port arg port to connect to
–host arg server to connect to
–eval arg evaluate javascript
-u [ –username ] arg username for authentication
-p [ –password ] arg password for authentication
-h [ –help ] show this usage information
–version show version information
–verbose increase verbosity
–ipv6 enable IPv6 support (disabled by default)
9.2 MongoDBに基づきjavascriptでリモート接続
> var x = new Mongo(‘192.168.0.197:27017’)
> var ydb = x.getDB(‘pagedb’);
> use ydb
switched to db ydb
> db
ydb
> ydb.page.findOne()
{
“_id” : ObjectId(“4eded6a5bf3bfa0014000003”),
“content” : “arkgame.com is a good site.”,
“pubdate” : “2015-03-19”,
“title” : “manager is a poor boy and live unhappy “,
“url” : “http://arkgame.com”
}

「基礎入門」MongoDBのセキュリティ管理方法のまとめ

1.セーフモード認証で起動
mongod –auth –dbpath /usr/mongo/data –logfile /var/mongo.log

2.ユーザを追加
db.addUser(“admin”, “,%F23_kj~00Opoo0+\/”)
結果表示
{
“user” : “admin”,
“readOnly” : false,
“pwd” : “995d2143e0bf79cba24b58b3e41852cd”
}

3.セキュリティ認証
3.1データベースセキュリティ認証
認証成功
{
“user” : “admin”,
“readOnly” : false,
“pwd” : “995d2143e0bf79cba24b58b3e41852cd”
}
認証失敗
db.system.users.find()
error: {
“$err” : “unauthorized db:admin lock type:-1 client:127.0.0.1”, “code” : 10057
}

4.データベースにロックを書き込む
db.runCommand({fsync:1,lock:1})
結果
{
“info” : “now locked against writes, use db.$cmd.sys.unlock.findOne() to unlock”,
“ok” : 1
}

5.現在のロック状態の確認
db.currentOp()
結果
{
“inprog” : [ ],
“fsyncLock” : 1,
“info” : “use db.$cmd.sys.unlock.findOne() to terminate the fsync write/snapshot lock”
}
6.アンロック
use admin
db.$cmd.sys.unlock.findOne()
結果
{ “ok” : 1, “info” : “unlock requested” }

「基礎入門」MongoDB基本DDLとDMLの操作方法のまとめ

1.データベースの作成
> show dbs
admin 0.03125GB
local (empty)
pagedb_startnews24_startnews24 0.03125GB
test 0.03125GB
> use LuceneIndexDB
switched to db LuceneIndexDB
> show dbs
admin 0.03125GB
local (empty)
pagedb_startnews24_startnews24 0.03125GB
test 0.03125GB
> db
LuceneIndexDB
> db.storeCollection.save({‘version’:’3.5′, ‘segment’:’e3ol6′})
> show dbs
LuceneIndexDB 0.03125GB
admin 0.03125GB
local (empty)
pagedb_startnews24_startnews24 0.03125GB
test 0.03125GB
>
2.データベースを削除
db.dropDatabase()

3.コレクション(collection)を作成
コマンド
db.createCollection(name, { size : …, capped : …, max : … } )

> db.createCollection(‘replicationColletion’, {‘capped’:true, ‘size’:10240, ‘max’:17855200})
{ “ok” : 1 }
> show collections
replicationColletion
storeCollection
system.indexes

4.コレクションを削除
db.mycoll.drop()

5.レコードを挿入更新
> <em>db.storeCollection.save({‘version’:’3.5′, ‘segment’:’e3ol6′})</em>

6.レコードをクエリ
> db.storeCollection.findOne({‘version’:’3.5′})
{
“_id” : ObjectId(“4ef970f23c1fc4613425accc”),
“version” : “3.5”,
“segment” : “e3ol6”
}

7.複数のレコードをクエリ
find()

8.レコードを削除
> db.storeCollection.remove({‘version’:’3.5′})
> db.storeCollection.findOne()
null

9.インデックスを作成
> use pagedb_startnews24_startnews24
switched to db pagedb_startnews24_startnews24
> db.page.ensureIndex({‘title’:1, ‘url’:-1})
> db.system.indexes.find()
{ “name” : “_id_”, “ns” : “pagedb_startnews24_startnews24.page”, “key” : { “_id” : 1 }, “v” : 0 }
{ “name” : “_id_”, “ns” : “pagedb_startnews24_startnews24.system.users”, “key” : { “_id” : 1 }, “v” : 0}
{ “_id” : ObjectId(“4ef977633c1fc4613425accd”), “ns” : “pagedb_startnews24_startnews24.page”, “key” : {“title” : 1, “url” : -1 }, “name” : “title_1_url_-1”, “v” : 0

10.インデックスをクエリ
> db.page.getIndexes()
[
{
“name” : “_id_”,
“ns” : “pagedb_startnews24.page”,
“key” : {
“_id” : 1
},
“v” : 0
},
{
“_id” : ObjectId(“4ef977633c1fc4613425accd”),
“ns” : “pagedb_startnews24.page”,
“key” : {
“title” : 1,
“url” : -1
},
“name” : “title_1_url_-1”,
“v” : 0
}
]

11.インデックスを削除
db.mycoll.dropIndex(name)
db.mycoll.dropIndexes()

12.インデックスを再構築
> db.page.reIndex()
{
“nIndexesWas” : 2,
“msg” : “indexes dropped for collection”,
“ok” : 1,
“nIndexes” : 2,
“indexes” : [
{
“name” : “_id_”,
“ns” : “pagedb_startnews24.page”,
“key” : {
“_id” : 1
},
“v” : 0
},
{
“_id” : ObjectId(“4ef977633c1fc4613425accd”),
“ns” : “pagedb_startnews24.page”,
“key” : {
“title” : 1,
“url” : -1
},
“name” : “title_1_url_-1”,
“v” : 0
}
],
“ok” : 1
}

13.コレクション集合レコードを統計
> use fragment
switched to db fragment
> db.baseSe.count()
36749

14.レコード数をクエリして統計
> use fragment
switched to db fragment
> db.baseSe.find().count()
36749

15.指定されるデータベースの集合の利用可能ストレージ
> db.baseSe.storageSize()
142564096

16.指定されるデータベースの集合の利用総ストレージ
> db.baseSe.totalSize()
144096000

「基礎入門」MongoDBの基本的なコマンドのまとめ

1.show dbs
2.use pagedb
3.show collections
4.db.serverStatus()
{
“host” : “dev2”,
“version” : “1.8.3”,
“process” : “mongod”,
“uptime” : 845446,
“uptimeEstimate” : 839192,
“localTime” : ISODate(“2011-12-27T04:03:12.512Z”),
“globalLock” : {
“totalTime” : 845445636925,
“lockTime” : 13630973982,
“ratio” : 0.016122827283818857,
“currentQueue” : {
“total” : 0,
“readers” : 0,
“writers” : 0
},
“activeClients” : {
“total” : 0,
“readers” : 0,
“writers” : 0
}
},
“mem” : {
“bits” : 64,
“resident” : 12208,
“virtual” : 466785,
“supported” : true,
“mapped” : 466139
},
“connections” : {
“current” : 27,
“available” : 792
},
“extra_info” : {
“note” : “fields vary by platform”,
“heap_usage_bytes” : 70895216,
“page_faults” : 17213898
},
“indexCounters” : {
“btree” : {
“accesses” : 4466653,
“hits” : 4465526,
“misses” : 1127,
“resets” : 0,
“missRatio” : 0.00025231420484197006
}
},
“backgroundFlushing” : {
“flushes” : 14090,
“total_ms” : 15204393,
“average_ms” : 1079.0910574875797,
“last_ms” : 669,
“last_finished” : ISODate(“2011-12-27T04:02:28.713Z”)
},
“cursors” : {
“totalOpen” : 3,
“clientCursors_size” : 3,
“timedOut” : 53
},
“network” : {
“bytesIn” : 63460818650,
“bytesOut” : 763926196104,
“numRequests” : 67055921
},
“opcounters” : {
“insert” : 7947057,
“query” : 35720451,
“update” : 16263239,
“delete” : 154,
“getmore” : 91707,
“command” : 68520
},
“asserts” : {
“regular” : 0,
“warning” : 1,
“msg” : 0,
“user” : 7063866,
“rollovers” : 0
},
“writeBacksQueued” : false,
“ok” : 1
}

5.指定されるデータベースを統計
use fragment
db.stats()
db.stats()
{
“db” : “fragment”,
“collections” : 12,
“objects” : 384553,
“avgObjSize” : 3028.40198360174,
“dataSize” : 1164581068,
“storageSize” : 1328351744,
“numExtents” : 109,
“indexes” : 10,
“indexSize” : 16072704,
“fileSize” : 4226809856,
“ok” : 1
}

6.指定されたデータベース集合をクエリ
db.getCollectionNames()
db.getCollectionNames()
[
“17u”,
“baseSe”,
“bytravel”,
“daodao”,
“go2eu”,
“lotour”,
“lvping”,
“mafengwo”,
“sina”,
“sohu”,
“system.indexes”
]

Postgresqlの基本操作コマンドまとめ

基本操作コマンド
1.データベースに接続
psql -U user -d dbname

2.データベースの切り替え
\c dbname

3,データベースをリスト
\l

4.テーブルをリスト
\dt

5.テーブル構造をリスト
\d tblname

6.インデックスを確認
\di

7.データベースを作成
create database dbname
drop database dbname

テーブルをリネーム
alert table tbA rename to tbB

テーブルを削除
drop table tbname

既存テーブルにカラムを追加
alert table tbname add columon columnname type

テーブルのカラムを削除
alert table tbname drop column columname

カラムをリネーム
alert table tbname rename column columnA to columnB

カラムのデフォルト値を設定
alter table tbname alter column coluname set default defalut値

デフォルト値を削除
alter table tbname alter column coluname drop default

テーブルにデータを挿入
insert into tbname(colunA,colunB…)values(値1,値2…)

テーブルの特定行特定列のデータを修正
update tbname set targetcolumn=[target値] where 条件

テーブルから特定行のデータを削除
delete from tbname where condition
delete from tbname

テーブルを作成
create table (colun1[type1];colun2[type2]…)

8.\copyright //PostgreSQLの使用状況や配布条件を表示
\encoding  //クライアントの文字エンコーディングを表示
\h    //SQL構文
\prompt  //ユーザーをヒントして内部変数を設定
\password「username」securely change the password for a user

\q     //psqlを終了

9.pg_dumpとpg_dumpallを利用してデータベースをバックアップ
pg_dump drupal>/opt/Postgresql/backup/startnews24.bak