アプリ関連ニュース
- 2020年9月07日
- 技術情報
MySQL Storage Engines
Lets talk about the MySQL storage engines today.
A storage engine is a software module that uses a database management system to create, read, and update data in a database. There are two types of storage engines in MySQL: transactional and non-transactional.
For MySQL 5.5 and later, the default storage engine is InnoDB. The default storage engine for MySQL prior to version 5.5 was MyISAM. Choosing the right storage engine is an important strategic decision that will affect future development. In this tutorial, we will use MyISAM, InnoDB, Memory, and CSV storage engines. If you are new to MySQL and are studying the MySQL database management system, then this is not a big concern. If you are planning a production database, things get more complicated.
MySQL supported storage engines:
- InnoDB
- MyISAM
- Memory
- CSV
- Merge
- Archive
- etc.
Today I will talk about the two main engines of MySQL. InnoDB & MyISAM.
InnoDB
InnoDB tables are fully transaction and ACID compliant. They are also optimal for performance. The InnoDB table supports foreign key, commit, rollback, and forward operations. The size of an InnoDB table can be up to 64TB.
Like MyISAM, InnoDB tables are portable between different platforms and operating systems. MySQL also checks and repairs InnoDB tables, if necessary, at startup.
MyISAM
MyISAM extends the old ISAM storage engine. MyISAM tables are optimized for compression and speed. MyISAM tables are also portable across platforms and operating systems.
The size of the MyISAM table can be up to 256TB, which is huge. Also, MyISAM tables can be compressed into read-only tables to save space. At startup, MySQL checks MyISAM tables for corruption and even repairs them in case of errors. MyISAM tables are not transaction safe.
Before MySQL version 5.5, MyISAM was the default storage engine when you create a table without specifying the storage engine explicitly. Since version 5.5, MySQL uses InnoDB as the default storage engine.
By Yuuma
yuuma at 2020年09月07日 11:00:08
- 2020年9月04日
- 技術情報
[Laravel] Passportを使用したBearer token認証[1]
PHPのLaravelフレームワークのPassportを使用したBearer token認証の方法について紹介いたします。今回はPassport実装テスト用のプロジェクトを準備するところまでを説明します。
続きを読むnishida at 2020年09月04日 10:00:37
- 2020年9月02日
- Mac
iMovieを使ってみよう
tanaka at 2020年09月02日 10:00:26
- 2020年8月31日
- 技術情報
Singleton Design Pattern
Singleton is one of the creational design pattern that allows you to ensure that a class has only one instance, while providing a global access point to this instance.
Make the single instance object class responsible for creation, initialization, access, and execution. Declare the instance as a member of private static data. Provides a public static member function that encapsulates all initialization code and provides access to the instance.
The client calls the access function (using the class name and the scope resolution operator) whenever a reference to the single instance is required.
The singleton should be considered only if the following three criteria are met:
Single instance ownership cannot reasonably be assigned
Lazy initialization is desirable
Global access is not provided otherwise
Lets take a look at code samples
PHP code sample
<?php
/**
* Singleton class
*/
class LogSingleton {
/**
* I kept this attribute and constructor as private so that other sub class can't instantiate
* it can also be protected if you want to allow sub classes to be instantiated
*/
private static $intance = null;
private function __construct() {
}
/**
* I will assign the singleton instance if $instance is null.
* otherwise will return directly.
*/
public static function log() {
if (self::$intance == null) {
self::$intance = new LogSingleton();
}
return self::$intance;
}
//can also declare other public functions below.
public function debugLog()
{
return "debug log";
}
}
//client code
$client = LogSingleton::log(); // this is the singleton instance.
var_dump($client->debugLog());
C# sample code
using System;
namespace HelloWorld
{
class LogSingleton
{
/**
* I kept this attributes as private so that other sub class can't instantiate
* it can also be protected if you want to allow sub classes to be instantiated
*/
private static LogSingleton instance;
/**
* for the first use for this class, s_lock will have a object.
* This will later use along with lock function to protect from multi thread base.
*/
private static readonly object s_lock = new object();
public static LogSingleton log()
{
if (instance == null)
{
/**
* The client who has s_lock will proceed this condition.
*/
lock (s_lock)
{
/**
* I will assign the singleton instance if instance is null.
* otherwise will return directly.
*/
if (instance == null)
{
instance = new LogSingleton();
}
}
}
return instance;
}
//can also declare other public functions below.
public string debugLog()
{
return "debug log";
}
//client code
class Program
{
static void Main(string[] args)
{
var client = LogSingleton.log(); // this is the singleton instance.
Console.WriteLine(client.debugLog());
}
}
}
}
By Yuuma
yuuma at 2020年08月31日 11:00:46
- 2020年8月28日
- 技術情報
[Laravel] sessionの共有について
過去記事「[Laravel] 設定ファイル「.env」の切り替えについて」にて、URLのパス指定により、複数の「.env」設定ファイルの切り替えをおこなう方法を紹介いたしました。
今回は上記過去記事の補足説明となります。
nishida at 2020年08月28日 10:00:24