2021/6/11 #InfraStudy 2nd Season
![Cloud Native時代のデータベース](https://cdn-ak-scissors.b.st-hatena.com/image/square/3086cc9c6811d153bbea851d054272dc79b37d45/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Ff7bd54d7751f4af5af60187224dc4d6e%2Fslide_0.jpg%3F18284080)
パフォーマンス・チューニングに関するブログの第1回目です PayPayは、日本でもっともよく知られているQR決済サービスとなりました。2018年10月5日のローンチ後、2018年12月より実施した100億円あげちゃうキャンペーンは、その後のプロダクトの急成長に合わせたシステムのスケール拡張という長い道のりのスタート地点でもありました。 ここ数ヶ月の新規ユーザーの増え方[1]を見るにつけても、PayPayが驚異的な成長を続けていることは間違いありません。スタートアップ企業はまるで竹のように成長するとはこのことではないでしょうか。(竹は24時間で最大約90cmも伸びるそうです) PayPayの成長速度は? ユーザー数の伸び 2018年10月に初めてユーザーが増え、キャンペーンや日々メディアで報道されることによるユーザー数の増加もあり、1年後には1500万人を突破しました。2020年5月現在、サ
こんにちは。初投稿です。 2012年新卒入社の竹内です。入社当時を振り返るとOracle10g,11gを良く利用していおり、データモデリングなどテーブル設計が好きで、2018年4月ぐらいまでRDBとバッチに浸ってました。 さて、現在プロジェクトでRedisを使っているのですが、いままでRDB人間だっただけにKVSやRedisならではの特徴に四苦八苦してます。 苦しんだ分、色々な知見を得ることができているので、その内容をご紹介します! 対象者 Redisの業務システム導入を検討している方 RDBとRedisの違いを知りたい方 現場的なRedisの利用方法を知りたい方 書いてないこと データ型やコマンドなど、HelloWorld的に公式ドキュメントを見て得られる情報 インストールなど、Redisを利用できるまでの手順 フェイルオーバーやバックアップをはじめとする運用に関する内容 データ永続化に
この記事はMERPAY TECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき
5. デーアクセス層の役割 業務ロジックからデータアクセスの処理を隠ぺいする 永続化の仕組みが変わっても業務ロジックへの影響がない アプリケーションの肝である業務ロジックのメンテナンス性が上がる プレゼン テーション ビジネス ロジック データベース アクセス RDB ブラウザ 表示の仕組み 永続化の仕組み 業務の仕組み 6. データアクセスの処理が混在した業務ロジック (1/3) 業務ロジックとデータアクセスの処理が混在するとプログラムが複雑になる サンプルコード:ある口座から他の口座にお金を振り込む transfer メソッド 業務ロジック 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 public void transfer(Account from, Account to, int furikomigaku)
皆大好きLOAD DATAについてのお話です〜 LOAD DATAコマンドはinsertと比較して10倍以上のパフォーマンスでデータを取り込む事ができます。しかし、いろいろ癖があるため、扱いにくい点があります。 本題は日付型にnullをセットする事ですが、この際いろいろ見て行きたいと思います。 LOAD DATAでトランザクションは効くか LOAD DATAする時にデータの加工もできるか LOAD DATAでnull値を設定する方法その1 LOAD DATAでnull値を設定する方法その2 LOAD DATAでトランザクションは効くか ずばり効きます。 しかし5.1等の古いバージョンでは効きません。もし効かない場合、beginとcommitの間にALTER TABLE 等のDDLが挟まってないか確認して下さい。 DDLは暗黙commitが実行されるため、トランザクションは強制コミットされま
CakePHPでトランザクションを使用する必要があったのですが、一般的に用いられている方法だと、複数のテーブルを1つのトランザクションとして更新したい場合、コントローラ内での実装がとても分かりにくくなると感じ、異なる実装方法をとってみたので、ご紹介します。 一般的な実装方法とその課題 一般的な実装方法としては、app/models/app_model.phpに、下記のようなトランザクション管理用のメソッドを追加することが多いと思います。基本的に、各モデルクラスは、AppModelクラスを継承しているため、これらのメソッドをどのモデルからも利用可能になります。 function begin() { $db = & ConnectionManager::getDataSource($this->useDbConfig); $db->begin($this); } function commit
WEB開発で必ずついて回るのが、Submitボタン二度押しや戻るボタンを押されるなど、勝手な画面遷移をされないような配慮です。Strutsでは同期トークンという機能でこれらの考慮をサポートしてくれます。 実際にサンプルで、ある画面でSubmitを二度押ししたとき、それを検知して二つ目のリクエストをエラーではじくという事を考えてみます。 同期トークンとは † 同期トークンの機能とは以下の通りです。 あるアクションで、サーバ上でユニークなID(以下、トークン)を生成し、返却するhtmlにhidden等で仕込んでおく そのアクションで、トークンはSessionにも格納しておく 次のリクエストにはhidden内のトークンが飛んでくる 次のアクションで、hiddenパラメタ内のトークンとSessionのトークンが等しいことを確認する 等しければ、正しいリクエストということで処理する。Session内
悲観もあれば楽観もある「トランザクション」の常識:企業システムの常識をJBossで身につける(8)(1/4 ページ) 企業向けアプリケーションのさまざまな“常識”をJavaのオープンソース・フレームワーク群である「JBoss」から学んでいきましょう。企業システムを構築するうえでの基礎となる知識をリファレンス感覚で説明していきます。初心者から中堅、ベテランまで大歓迎! ありえない! 企業システムでの不完全なデータ 企業活動の日々の業務で発生するさまざまなデータ。それらを保存・利用するために、企業はITへの投資を行い、システムを構築しています。そうしたシステムにおいて、データを保存する際に防がなければならないのが不完全な状態での登録や更新です。 また、昨今のシステムでは保存先が複数存在するケースが多々あり、各保存先間での整合性を保証する必要があります。そこでシステム開発の際に重要となるのが、今
Strutsトランザクショントークン 画面遷移の順序性の確認や サブミットボタンの二度押し(重複サブミット)の防止チェックの為に、Strutsではトランザクショントークン(同期トークン)を使用する仕組みが用意されている。 トランザクショントークンの概要 トランザクショントークンの使用法 概要 トランザクショントークンは、以下のように実現される。 表示する画面の中にhiddenでランダムなID(トークン)を埋め込んでおき、そのトークンをサーバー側でもセッション内に保持しておく。 その画面でサブミットされると、hiddenに埋められていたトークンがリクエストに入れられてサーバーに届く。 サーバーでは、届いたhiddenのトークンとセッション内に保持していたトークンを比較する。一致していれば正しい遷移と判断する。 別の画面のhiddenには別のトークンが埋められている為、意図しない画面から来た場
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く