SmartNewsさん主催の『SmartNews Tech Night Vol.2』でお話した内容ですm(_ _)mRead less
SmartNewsさん主催の『SmartNews Tech Night Vol.2』でお話した内容ですm(_ _)mRead less
2015-04-07 普段MySQL使ってる僕がMongoDBを使って気づいたこと2つ テクノロジー プログラム Tweet ロゴ見て気づいたのですが、 MongoDBの頭文字って小文字なんですね。 そんなことは置いといて。 最近mongoDB(小文字に変えたw)を使う機会がありました。 僕が普段触っているMySQLと違って、 ググっても、まあー情報が少ないんですよね。 コマンドとかは割りとあるのですが、 PHPでの操作とかは少なかった印象です。 そこで今回は、 PHPでの操作 mongoDBの復旧(リストア) の2つを備忘録として、まとめておこうと思います。 PHPでループさせて検索ができない こういうことです↓ ※サンプルの一部はPHPの公式ドキュメントから拝借しました。 つまり、検索値(findの条件)を変数にしてループすることが出来ないようです。 まあ、そもそも何回もDB接続せずに
また、データの格納にmongoDBを使うのでこちらやこちらなどを参考にインストール。mongoDBの概要は「MongoDB の薄い本」などを参照。 PythonからmongoDBにアクセスするため、pymongoも導入します。 from requests_oauthlib import OAuth1Session from requests.exceptions import ConnectionError, ReadTimeout, SSLError import json, datetime, time, pytz, re, sys,traceback, pymongo #from pymongo import Connection # Connection classは廃止されたのでMongoClientに変更 from pymongo import MongoClient from
印刷する メールで送る テキスト HTML 電子書籍 PDF ダウンロード テキスト 電子書籍 PDF クリップした記事をMyページから読むことができます 「MongoDB」はNoSQLの中でもドキュメント型NoSQLに分類されます。MongoDBは他のNoSQLと同様に、リレーショナルデータベース(RDBMS)と比較してビックデータや非構造データの処理が得意といった特徴がありますが、ここではそういったNoSQLの一般的な特徴の紹介は割愛し、他のNoSQLとは違うドキュメント型NoSQLならではの特徴、そしてMongoDBならではの特徴を紹介します。 ドキュメント型ならではの特徴 ドキュメント型NoSQLではデータとして階層型データ構造であるJSONを扱います。図1にRDBMSのリレーショナルデータ構造、キーバリューストア(KVS)のキーバリューデータ構造、ドキュメント型NoSQLのJSO
MongoDB 3.0の最大の特長はストレージエンジンAPIが採用され、ストレージエンジンが入れ替え可能(プラガブル)になったことです。MongoDB 3.0からは新しいストレージエンジンWiredTigerが導入されました。 WiredTigerは従来のエンジンに比べて書き込み性能で7倍から10倍のスループット性能向上を実現。ドキュメントレベルでの並列性も実現しています。これによって大量書き込みの発生するモバイルアプリケーションやソーシャルアプリケーション、IoT(Internet of Things)などのバックエンドで従来以上に性能を発揮できるようになったとのこと。 またデータの圧縮機能を搭載したことにより、最大80%以上のデータ容量を削減できるようになりました。アプリケーションの要求にあわせて圧縮率と性能の適切なバランスをとるための圧縮アルゴリズムの選択も可能。 専用管理ツールのO
MongoDBを使うシステムが、最近多いと思います。 2.6系(安定版)の最新2.6.7ですが、Date型のインポート処理にバグがありそうです。 「1970/01/01」以前の Date型 を mongoexport すると、負の "$numberLong" として出力されるのですが、それを mongoimport すると、それ以降のフィールドが欠落してしまうのです。 例えば、ユーザマスタに「誕生日」フィールドがあると、45歳以上の人は「1970/01/01」以前の値が入っているわけで、マスタデータを移行したりでもすると、その人のフィールドがガッツリ無くなってしまいます。でも若手は大丈夫だから「どうせ部長の使い方がおかしいんでしょwww」といういつもの「偉い人に限って障害が発生する」パターンが展開されます。 大急ぎで調べた所、以下が判明しました。 2.6形式 "1965-11-17T00:
はじめに 前回から、いよいよNode.jsを使ったWebアプリケーションを作成しはじめました。前回はデータを保存および読み出す処理がなかったので、今回はデータベースとの連携を実装したいと思います。使うのはMongoDBです。リレーショナルデータベースに対して、MongoDBはドキュメント指向データベースという位置づけです。JSON構造をそのまま保存できるため、Node.jsとの親和性も高いです。簡単に導入でき、日本語ドキュメントもあるので、初めてでもすんなり使えると思います。 MongoDBのセットアップ MongoDBのサイトから、OSごとに用意されたアーカイブをダウンロードして展開してください。展開したフォルダの直下にあるbinディレクトリ内にコマンド群があるため、これらを使って操作します。サーバデーモンとなるのがmongodで、クライアントとなるのがmongoになります。 まず適当に
連載目次 前回から始まった「MEANスタックで始めるWebアプリ開発入門」ですが、第1回、「LAMPに代わる構成として注目のMEANスタックの基礎知識とインストール、ひな型作成」では、MEANスタックの概要について説明とセットアップ、サンプルアプリの作成を通して最初のMEANスタックアプリに触れてみました。 今回からはMEANスタックの各構成要素についてもう少し詳細な解説をしていきます。第2回となる本記事では、MEANスタックの中心となる技術、Node.jsについて基本的な部分やインストール方法、その周辺ツールを紹介していきます。 サーバーサイドJavaScriptの実行環境「Node.js」とは 前回も少し説明しましたが、Node.jsとはサーバーサイドJavaScriptの実行環境です。2009年にRyan Dahl氏によって開発され、Google Chrome用JavaScript実
MongoDB、Express、AngularJS、Node.jsで構成されるMEANスタックを用いたWebアプリの開発方法について紹介していく連載。 MEANスタックで始めるWebアプリ開発入門(終): AngularJSユーザーのためのAngular2超入門 MEANスタックを用いたWebアプリの開発方法について紹介していく本連載。今回は、前回カスタムディレクティブで解説しきれなかった内容と、最近リリースされたAngular2を紹介します。(2016/11/17) MEANスタックで始めるWebアプリ開発入門(10): AngularJSを使いこなすなら絶対に知っておきたいフィルタとカスタムディレクティブの基本 MEANスタックを用いたWebアプリの開発方法について紹介していく本連載。今回は、AngularJSでもよく使用する機能であるフィルタの使い方とそのカスタマイズ方法、そして、独
はじめに 前回までで、Node.jsによる簡単なWebアプリケーションが一通り完成しました。今回はこの構築したアプリケーションを、クラウドベースのアプリケーションホスティングサービスであるHeroku上で、動かしてみたいと思います。HerokuはNode.js以外にもJava, Ruby, Pythonなどのアプリケーションをデプロイすることができます。 Herokuのセットアップ まず、Herokuのサイトから、「Sign up」ボタンよりアカウントを登録してください。 図1 Herokuのサイト さらに、heroku toolbeltというHeroku用コマンドラインツールや開発およびデプロイに使うアプリケーション一式が提供されています。こちらを各々の環境に合わせてインストールします。 インストールが終わったら、コマンドラインからherokuに対する認証処理を行っておきましょう。 $
NoSQLデータベースの1つでドキュメント指向データベースとして知られるMongoDBが、高性能のデータベースエンジンを提供するWiredTigerの買収を発表しました。 WiredTigerはマルチコアとメモリを活用することで高い並列性によるスケーラビリティと高性能を追求したデータベースエンジン。安定して低いレイテンシーと高いスループットを実現すると説明されています。 開発チームは、キーバリュー型データベースとして広く知られるBerkeley DBのアーキテクトだったエンジニア達。 Their latest effort, WiredTiger, is an open source storage engine that powers many high-performance systems, including services at Amazon. WiredTiger lever
3月1日、「MongoDB Conference in Japan」(通称、mongotokyo)が開催されました。本稿では、日本ユーザーグループ「MongoDB JP」の代表をやらせていただいている筆者から、イベントレポートをお届けします。 MongoDB Conferenceとは MongoDB Conferenceは、開発元である10genが主催している国際カンファレンスです。10genのエンジニアが世界各地へ飛び回り、現地のMongoDBユーザーと複数の発表セッションを通じて交流を行う、非常にエキサイティングな催しです。 このConferenceは今までアメリカ、ヨーロッパを中心に行われていましたが、これまでアジアでの開催は一度もない状況でした。というのもMongoDB自身がアメリカ・ヨーロッパで爆発的に普及しているのに対して、日本ではようやく認知度が高まってきてはいるものの、
この表では言及していませんが、Consistent Hashingやshardingによって分散させやすいというのはすべてのNoSQLデータベースが備えている特徴でしたね。 検証用サーバの準備 では実際のパフォーマンスを比較してみましょう。比較のため、10,000件のデータの書込み/読込みを行います。実行にあたり各種サーバを起動します。 リスト1 検証用サーバの起動コマンド # memcached memcached -u nobody -d # TokyoTyrant sudo ttserver -pid /var/ttserver/pid -dmn /var/ttserver/bench.tch # MongoDB mongod --dbpath ~/tmp/mongodb & # HBase sudo /etc/init.d/hadoop-0.20-namenode start su
はじめに 今回はドキュメント指向型データベースの代表としてMongoDBを取り上げます。ドキュメント指向型データベースはRDBMSと違って、スキーマ(テーブル定義)が必要ないことが大きな特徴です。 今回も利用したコードやプログラムはgithubに置いてあるので適宜参照してください。 MongoDBの特徴 前々回、前回と紹介したmemcachedやTokyoTyrantは基本的にRDBMSと組み合わせて、「RDBMSの弱い部分を補う」という使い方でした。しかしMongoDBは少し違っていて、JOINが行えないこととトランザクションをサポートしていないこと以外は、ほぼRDBMSと同じように扱うことができるため、「RDBMSの代替として使う」ことが可能です。 上述したようにMongoDBはRDBMSと違ってJOINはできませんが、代わりに基準となるオブジェクトに別のオブジェクトをあらかじめe
はじめに 前回までは、Node.jsについての基礎的な説明からnpmによるパッケージ管理まで、紹介してきました。今回から、いよいよNode.jsを使ったWebアプリケーションを実装していきます。前々回に単純なHTTPサーバの実装についてコードとともに紹介しました。あれをみるとわかるとおり、nodeが提供するHTTPサーバの機能はプロトコルに沿ったローレベルなものになっています。例えば、リクエストが来たら、そのURLパスに従った処理を実行するために、リクエストURIの解析から実装していかなくてはなりません。そういったことが簡単に定義して処理を書けるWebアプリケーションフレームワークがnodeにも存在します。本連載では、その代表格のExpressを使って実装してみたいと思います。 Expressのインストール Express(Express.jsと表記されることが多い)は、非常に手軽にnod
はじめに 本記事では、MongoDBのクエリを解説します。MongoDBはリレーショナルデータベース(以下"RDB"と略記)ではないため、SQLは使用できません。その代わり、MongoDB特有の「Mongoクエリ言語」を用います。Mongoクエリ言語のCRUD操作については公式ドキュメントに詳しい解説があります。 本記事の構成は、最初にMongoクエリ言語の特徴について解説し、2ページ目ではSQLとMongoクエリ言語の比較を行います。3ページ目では、MongoDBクエリ言語の使い方を説明し、最後に、プログラミング言語からの利用の仕方の説明として、Rubyからの利用を説明します。 Mongoクエリ言語の特徴 Mongoクエリ言語には以下の特徴があります。 コレクションの各メソッドを用いてCRUD操作をします メソッドの引数にはJSON形式のデータを渡します 変数が使えます 制御構造が使えま
検索エンジン自作入門 ~手を動かしながら見渡す検索の舞台裏 作者:山田 浩之,末永 匡発売日: 2014/09/25メディア: 単行本(ソフトカバー) (この記事で紹介しているのはTF-IDFとかの計算もない簡素なものです。) はじめに Webサービスのプログラミングに必要なことのだいたいは、スクレイピングに学んだ - Line 1: Error: Invalid Blog('by Esehara' ) この前↑の記事をみかけました。クローリングやスクレイピングは、色々と応用が効きそうなのでしっかり勉強したい。 PythonではScrapyという有名なクローリング・スクレイピング用のライブラリがありますが、今回は勉強としてScrapyを使わずに実装してみる。流れとしては以下のとおり Webクローラの構築 Mecabで日本語の形態素解析 検索エンジンの構築 データをMongoDBに格納 Fl
第31回に続いて、今回はMongoDBをRubyから使う方法をご紹介します。 MongoDBをRubyから使うためのライブラリ MongoDBをRubyから使うには、以下のライブラリ等を利用する必要があります。 Ruby driver for MongoDB [GitHub, チュートリアル] RubyからMongoDBを使う上で基本となるのが、公式のRubyドライバです。 MongoDBのほぼ全機能にアクセスできるため、複雑なことをしたいときには頼りになるでしょう。後述する他のライブラリも内部ではこのドライバを使っています。 ドキュメントをオブジェクトにマッピングしてActiveRecordライクに扱う、オブジェクトマッパーの機能を提供するライブラリもあります。今回は代表的なものを2つご紹介します。 MongoMapper [GitHub, 作者による紹介] 比較的ActiveRecor
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く