1. Khái niệm MongoDB
MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON. Sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và các document khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.
2. Khi nào sử dụng MongoDB
Quản lý và truyền tải content – Quản lý đa dạng nhiều product của content chỉ trong một kho lưu trữ data cho phép thay đổi và phản hồi nhanh chóng mà không chịu thêm phức tạp thêm từ hệ thống content.
Cấu trúc Mobile và Social – MongoDB cung cấp một platform có sẵn, phản xạ nhanh, và dễ mở rộng cho phép rất nhiều khả năng đột phá, phân tích real-time, và hỗ trợ toàn cầu.
Quản lý data khách hàng – Tận dụng khả năng query nhanh chóng cho phân tích real-time trên cơ sở dữ liệu người dùng cực lớn vớ các mô hình data phức tạp bằng các schema linh hoạt và tự động sharding cho mở rộng chiều ngang.
3. Ưu điểm và nhược điểm
Ưu điểm
Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ.
Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao.
Nhược điểm
Không ứng dụng được cho các mô hình giao dịch nào có yêu cầu độ chính xác cao do không có ràng buộc.
Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng.
Dữ liệu lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn.
Mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao.
4. Kết nối Laravel + MongoDB
Tạo dự án laravel
composer create-project laravel/laravel Demo
Thêm package mongoDB vào dự án
composer require mongodb/laravel-mongodb:4.0.0
Thêm cấu hình mongoDB
Thêm vào file config/database.php
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI'),
'database' => 'YOUR_DATABASE_NAME',
],
Để lấy các thông tin cấu hình mongoDB truy cập connection mongoDB
Tạo Database
Chọn connect->Drivers
Khi đó bạn sẽ lấy được chuỗi kết nối có dạng như thế này
mongodb+srv://<username>:<password>@test.hlpfzgm.mongodb.net/?retryWrites=true&w=majority
Cập nhật vào file .env
MONGODB_URI=mongodb+srv://<username>:<password>@test.hlpfzgm.mongodb.net/?retryWrites=true&w=majority
Lưu ý: <username> và <password> là username và password đã được nhập ở bước tạo database
Cập nhật vào file config/database.php
'default' => env('DB_CONNECTION', 'mongodb'),
Kiểm tra kết nối
Route::get('/ping', function (Request $request) {
$connection = DB::connection('mongodb');
$msg = 'Thành công!';
try {
$connection->command(['ping' => 1]);
} catch (\Exception $e) {
$msg = 'Thất bại: ' . $e->getMessage();
}
return ['msg' => $msg];
});
Tạo migration và model
public function up(): void
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->string('age');
$table->timestamps();
});
}
Chạy lệnh:
php artisan migration
php artisan make:model Customer
//use Illuminate\Database\Eloquent\Model;
use MongoDB\Laravel\Eloquent\Model;
class Customer extends Model
{
use HasFactory;
protected $connection = 'mongodb';
protected $collection = 'customers';
protected $fillable = ['name','email','age'];
}
CRUD
//Thêm mới
CustomerSQL::create([
'name'=> 'customer_1',
'email'=> '[email protected]',
'age' => '18',
]);
//Lấy thông tin customers
Customer::where('name', 'customer_1')->get();
Hết rồi, hy vọng bài viết có thể giúp ích được cho bạn
Cảm ơn và hẹn gặp lại =)) !!!
1 comment
Zaproxy dolore alias impedit expedita quisquam.