Xuất mysql sang mongodb

Trong bài viết này, bạn sẽ tìm hiểu cách di chuyển cơ sở dữ liệu Quan hệ (MySQL, MariaDb, v.v.) sang cơ sở dữ liệu Không quan hệ như MongoDb

Yêu cầu

  • Tôi hy vọng rằng bất kỳ ai đọc bài viết này đều có ít nhất một kiến ​​thức tối thiểu về cơ sở dữ liệu và nếu bạn là người mới hoàn toàn, sẽ có phần giới thiệu ngắn gọn về cơ sở dữ liệu và một liên kết sẽ được đính kèm để đọc thêm

Sự mong đợi

  • Ở cuối bài viết này, bạn sẽ có thể viết tập lệnh của riêng mình và di chuyển cơ sở dữ liệu của bạn từ MySQL sang MongoDB
  • Bạn sẽ có thể phân biệt giữa Cơ sở dữ liệu quan hệ và Cơ sở dữ liệu phi quan hệ, cách chúng hoạt động, sự khác biệt và điểm tương đồng của chúng

Cây rơm
Mongodb, MySQL(Maridb đã được sử dụng trong bài viết này), Sequelize, Sequelize-auto Nodejs
GHI CHÚ. Mã ví dụ tương tự như những gì bạn sẽ gặp phải khi làm theo các bước và không mong đợi chính xác điều tương tự do cấu trúc cơ sở dữ liệu của bạn khác


cơ sở dữ liệu

Cơ sở dữ liệu đơn giản là một tập hợp dữ liệu có cấu trúc. Hãy nghĩ đến việc chụp ảnh tự sướng. bạn nhấn một nút và chụp ảnh của chính mình. Ảnh của bạn là dữ liệu và thư viện điện thoại của bạn là cơ sở dữ liệu. Cơ sở dữ liệu là nơi lưu trữ và tổ chức dữ liệu

SQL

MySQL và SQL không giống nhau. Xin lưu ý rằng MySQL là một trong những tên thương hiệu phổ biến nhất của phần mềm Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), triển khai mô hình máy khách-máy chủ. Vì vậy, làm thế nào để máy khách và máy chủ giao tiếp trong môi trường RDBMS? . Nếu bạn từng gặp các tên khác có SQL trong đó, chẳng hạn như PostgreSQL và Microsoft SQL server, thì rất có thể chúng là các thương hiệu cũng sử dụng cú pháp Ngôn ngữ truy vấn có cấu trúc. Phần mềm RDBMS thường được viết bằng các ngôn ngữ lập trình khác, nhưng luôn sử dụng SQL làm ngôn ngữ chính để tương tác với cơ sở dữ liệu. Bản thân MySQL được viết bằng C và C++. Từ "quan hệ" có nghĩa là dữ liệu được lưu trữ trong tập dữ liệu được sắp xếp dưới dạng bảng. Mỗi bảng liên quan theo một số cách. Nếu phần mềm không hỗ trợ mô hình dữ liệu quan hệ, chỉ cần gọi nó là DBMS

Giới thiệu về MySQL

MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở (RDBMS) sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL) làm cơ chế xử lý và tương tác với dữ liệu. Mặc dù MySQL là một trong những hệ thống quản lý cơ sở dữ liệu nổi tiếng và được sử dụng rộng rãi và được coi là hệ thống quản lý cơ sở dữ liệu đáng tin cậy, có thể mở rộng và hiệu quả, nhưng nó KHÔNG phù hợp để xử lý dữ liệu lớn, đặc biệt là với tốc độ chèn LỚN

Giới thiệu về MongoDb

MongoDB là một hệ thống quản lý cơ sở dữ liệu phi quan hệ (DBMS) mã nguồn mở, sử dụng các tài liệu linh hoạt thay vì các bảng và hàng để xử lý và lưu trữ các dạng dữ liệu khác nhau. Là một giải pháp NoSQL, MongoDB không yêu cầu hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), do đó, nó cung cấp một mô hình lưu trữ dữ liệu đàn hồi cho phép người dùng lưu trữ và truy vấn các loại dữ liệu đa biến một cách dễ dàng. Điều này không chỉ đơn giản hóa việc quản lý cơ sở dữ liệu cho các nhà phát triển mà còn tạo ra một môi trường có khả năng mở rộng cao cho các ứng dụng và dịch vụ đa nền tảng
Tài liệu MongoDB hoặc bộ sưu tập tài liệu là đơn vị dữ liệu cơ bản. Được định dạng dưới dạng JSON nhị phân (Ký hiệu đối tượng tập lệnh Java), các tài liệu này có thể lưu trữ nhiều loại dữ liệu khác nhau và được phân phối trên nhiều hệ thống. Vì MongoDB sử dụng thiết kế lược đồ động nên người dùng có tính linh hoạt vô song khi tạo bản ghi dữ liệu, truy vấn các bộ sưu tập tài liệu thông qua tập hợp MongoDB và phân tích lượng lớn thông tin

MongoDB so với. mysql
MySQL sử dụng ngôn ngữ truy vấn có cấu trúc để truy cập dữ liệu được lưu trữ. Ở định dạng này, các lược đồ được sử dụng để tạo cấu trúc cơ sở dữ liệu, sử dụng các bảng như một cách để chuẩn hóa các loại dữ liệu sao cho các giá trị có thể tìm kiếm được và có thể được truy vấn đúng cách. Một giải pháp trưởng thành, MySQL hữu ích cho nhiều tình huống bao gồm cơ sở dữ liệu trang web, ứng dụng và quản lý sản phẩm thương mại
Do tính chất cứng nhắc của nó, MySQL thích hợp hơn MongoDB khi tính toàn vẹn và cách ly dữ liệu là cần thiết, chẳng hạn như khi quản lý dữ liệu giao dịch. Nhưng định dạng ít hạn chế hơn và hiệu suất cao hơn của MongoDB làm cho nó trở thành lựa chọn tốt hơn, đặc biệt khi tính khả dụng và tốc độ là mối quan tâm chính

Tại sao chúng ta cần di cư
Chúng tôi đã xây dựng một Hệ thống kỹ thuật số cho nông dân và khi chúng tôi thử nhân rộng và nhân rộng công nghệ của mình ở các tiểu bang và quốc gia khác, chúng tôi phát hiện ra cấu trúc cơ sở dữ liệu của mình liên tục thay đổi. Do thiết kế MongoDb không có sơ đồ và không có cấu trúc, chúng tôi có thể có các tài liệu với các bộ dữ liệu khác nhau trong MongoDb trái ngược với cơ sở dữ liệu quan hệ. Tôi sẽ di chuyển khoảng 600 nghìn bản ghi từ MariaDb sang MongoDb
Tôi đã lướt internet để tìm các công cụ có thể trợ giúp và tôi đã tìm thấy Studio3t và Mongify

Studio3T thuộc sở hữu của 3T Software Labs và họ là đối tác công nghệ MongoDB
3T đã tạo ra các công cụ chuyên nghiệp cho MongoDB từ năm 2014 và Studio 3T hiện là GUI / IDE bên thứ 3 số một dành cho các nhà phát triển và kỹ sư dữ liệu làm việc với MongoDB. Các tính năng quản lý dữ liệu như chỉnh sửa tại chỗ và kết nối cơ sở dữ liệu dễ dàng phù hợp với việc tạo mã truy vấn đa ngôn ngữ, shell nâng cao với tính năng tự động hoàn thành, nhập/xuất SQL dễ dàng, cũng như di chuyển nặng nề giữa cơ sở dữ liệu quan hệ và MongoDB

Báo cáo vấn đề
Trân trọng, Studio có các tính năng tuyệt vời. Họ có gói miễn phí cho phép bạn dùng thử các tính năng của họ trong 30 ngày. Điều này thật tuyệt cho đến khi tôi viết xong các truy vấn của mình (bộ lọc và tham gia), nhấp vào “xuất” và tất cả những gì tôi thấy là 1000 tài liệu trong MongoDb, nhưng tôi có khoảng 600 nghìn bản ghi trong MariaDB, không có cách nào cơ sở dữ liệu MongoDb của tôi có thể ít hơn thế. Vì vậy, tôi quyết định tìm hiểu thêm và tôi phát hiện ra rằng mức tối đa tôi có thể làm với bậc miễn phí là 1k. Cái này chả là gì so với 600k. Nâng cấp lên kế hoạch doanh nghiệp của họ không phải là một vấn đề lớn, giá là 700 USD cho một người dùng mỗi năm, nhưng đến từ một quốc gia thuộc thế giới thứ ba liên kết với Nigeria, đó là rất nhiều tiền. Xem xét thực tế rằng, tôi chỉ cần một công cụ duy nhất từ ​​toàn bộ gói phần mềm. Đó là một không cho tôi

Mongify là một tiện ích (hoặc một viên ngọc ruby) được viết bằng ngôn ngữ ruby ​​và được sử dụng để di chuyển cơ sở dữ liệu từ SQL sang mongodb. Thông tin chi tiết hơn về ngôn ngữ ruby ​​​​và đá quý ruby ​​​​có thể được tìm thấy trên các trang web tương ứng của họ. Tiện ích Mongify di chuyển cơ sở dữ liệu mà không quan tâm đến khóa chính và khóa ngoại như trong trường hợp RDBMS. Nó hỗ trợ di chuyển dữ liệu từ MySQL, SQLite và các cơ sở dữ liệu quan hệ khác. Tuy nhiên, bài viết này chỉ tập trung vào việc chuyển dữ liệu từ MySQL sang MongoDB

Báo cáo vấn đề
Vấn đề tôi gặp phải với mongify là đá quý ruby ​​​​có vấn đề về khả năng tương thích. Việc cài đặt trên windows không hoàn toàn dễ dàng, có thể dễ dàng hơn trên Linux (hãy dùng thử nếu bạn sử dụng Linux). Giải quyết một vấn đề dường như là giấy phép cho các lỗi, chúng tiếp tục mọc lên. Sau khi vùi đầu vào tài liệu của họ và dành gần như cả ngày để cố gắng khắc phục các sự cố tương thích của gem, tôi đã bỏ cuộc

Giải pháp của tôi

Tôi hình dung đã đến lúc tôi viết kịch bản của mình
Đối với quá trình di chuyển, tôi cho rằng bạn đã có cơ sở dữ liệu SQL ở đâu đó trên đám mây hoặc trên máy cục bộ của mình
Để cài đặt mongodb trên máy chủ hoặc máy cục bộ của bạn, hãy làm theo hướng dẫn trong tài liệu mongodb

Bạn phải cài đặt Node và MongoDB Compass trên máy cục bộ của mình,
Bản thân MongoDB của bạn có thể nằm ở bất kỳ đâu trên máy cục bộ của bạn hoặc trên đám mây như tập bản đồ MongoDB. Bạn có thể làm theo hướng dẫn trong tài liệu MongoDB để bắt đầu

MongoDB Compass là GUI chính thức cho MongoDB, được duy trì bởi chính MongoDB. MongoDB Compass giúp người dùng đưa ra quyết định thông minh về cấu trúc dữ liệu, truy vấn, lập chỉ mục và nhiều hành động khác mà bạn có thể thực hiện trên cơ sở dữ liệu
Để cài đặt Node trên máy tính của bạn. Thực hiện theo bất kỳ liên kết dưới đây
cho windows, cho Mac hoặc cho linux
Để kiểm tra xem bạn có Node không. js được cài đặt, hãy chạy lệnh này trong thiết bị đầu cuối của bạn
node -v
Để xác nhận NPM đã được cài đặt, hãy nhập **npm** -v trong Terminal. Điều này sẽ in số phiên bản, do đó bạn sẽ thấy một cái gì đó như thế này 6. 4

NPM là trình quản lý gói cho ngôn ngữ lập trình JavaScript. npm, Inc. là công ty con của GitHub, cung cấp dịch vụ lưu trữ để phát triển phần mềm và kiểm soát phiên bản với việc sử dụng Git. npm là trình quản lý gói mặc định cho môi trường thời gian chạy JavaScript Nút. js

Để bắt đầu một dự án mới, cd vào thư mục không gian làm việc của bạn, hãy tạo một thư mục mới sẽ lưu trữ dự án của bạn, mở terminal và gõ

npm init

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

bạn sẽ được yêu cầu điền vào một số chi tiết về dự án của bạn. Sau khi lưu một tệp package.json sẽ được tạo cho bạn
Sau đó, bây giờ bạn có thể cài đặt các phụ thuộc npm sau bằng lệnh sau

npm install sequelize-auto sequelize mysql2

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

phần tiếp theo-tự động đã được sử dụng để tạo mô hình cho phần tiếp theo của tôi

phần tiếp theo là một Nút dựa trên lời hứa. js ORM cho Postgres, MySQL, MariaDB,
SQLite và Microsoft SQL Server. Nó có tính năng hỗ trợ giao dịch vững chắc, các mối quan hệ, tải háo hức và lười biếng, sao chép đọc và hơn thế nữa

mysql2 là ứng dụng khách MySQL cho Nút. js tập trung vào hiệu suất
Để tạo mô hình của bạn với serialize-auto, bạn cần chạy lệnh này

npx sequelize-auto -h  -d  -u  -x [password] -p [port]  --dialect [dialect] -c [/path/to/config] -o [/path/to/models] -t [tableName]

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

tất cả các mô hình đều được lưu vào tệp bạn đã đặt trong “đường dẫn/đến/mô hình”. Nó tạo ra một tệp như thế này /model/user. js

Sequelize-auto cũng tạo một tệp khởi tạo, ./models/init-models.js, chứa mã để tải từng định nghĩa mô hình vào Sequelize

Điều này giúp dễ dàng nhập tất cả các mô hình của bạn vào Sequelize bằng cách gọi initModels(sequelize)

Để chạy tập lệnh của chúng tôi, hãy tạo một tệp có tên index.js trong thư mục gốc, đây sẽ là điểm bắt đầu cho tập lệnh của bạn
Thực hiện theo **[hướng dẫn bắt đầu**](https. // sắp xếp lại. org/master/manual/bắt đầu. html) trong tài liệu về phần tiếp theo để giúp bạn bắt đầu với phần tiếp theo

Chúng tôi muốn có thể ghi kết quả của cơ sở dữ liệu của mình vào tệp json mà sau này chúng tôi sẽ nhập vào MongoDB bằng MongoDB Compass
Chúng tôi cần hai mô-đun “fs” và “path”, chúng tôi không cần cài đặt chúng, chúng đã đi kèm với nút. tôi chỉ cần nhập chúng bằng cách sử dụng 'yêu cầu' trong mã của chúng tôi

Mô-đun Đường dẫn cung cấp cách làm việc với các thư mục và đường dẫn tệp
Nút. js bao gồm mô-đun fs để truy cập hệ thống tệp vật lý. Mô-đun fs chịu trách nhiệm cho tất cả các hoạt động I/O tệp không đồng bộ hoặc đồng bộ. Bạn có thể nhấp vào liên kết để tìm hiểu thêm về trường hợp sử dụng của họ

để chạy tệp index.js, hãy chỉnh sửa tệp package.json của bạn để trông giống như thế này

sau đó chạy lệnh

npm install sequelize-auto sequelize mysql2
2 trong terminal. Nội dung nhập của bạn phải được lưu vào tệp có tên
npm install sequelize-auto sequelize mysql2
3 trong thư mục gốc của bạn

Làm cách nào để chuyển đổi bảng MySQL sang bộ sưu tập MongoDB?

Làm theo các bước được đề cập bên dưới để di chuyển MySQL sang MongoDB thành công. .
Bước 1. Cài đặt các mô-đun cần thiết
Bước 2. Đọc dữ liệu từ bảng MySQL
Bước 3. Ghi vào Bộ sưu tập MongoDB
Bước 4. Hoàn thành kịch bản
Bước 5. Tăng cường tập lệnh để tải tất cả các bảng trong lược đồ MySQL

Làm cách nào để đồng bộ hóa MySQL với MongoDB?

Tích hợp dữ liệu của bạn trong 3 bước đơn giản .
Thêm nguồn và đích của bạn. Kết nối với hơn 15 nguồn dữ liệu, như MySQL và hơn 125 đích, như MongoDB. Liên kết. Đăng nhập
Xác định mô hình của bạn. Sử dụng SQL hoặc chọn một mô hình dbt hoặc Looker hiện có
Đồng bộ hóa dữ liệu của bạn. Xác định cách các trường từ bản đồ mô hình của bạn sang MongoDB và bắt đầu đồng bộ hóa. e-mail

Làm cách nào để di chuyển dữ liệu từ MySQL sang MongoDB bằng Python?

Di chuyển dữ liệu bảng MySQL sang bộ sưu tập MongoDB bằng Python .
Bước 1. Cài đặt các mô-đun cần thiết. .
Bước 2. Đọc dữ liệu từ bảng MySQL. .
Bước 3. Ghi vào Bộ sưu tập MongoDB. .
Bước 4. Đặt mọi thứ lại với nhau. .
Bước 5. Tăng cường tập lệnh để tải tất cả các bảng trong lược đồ MySQL. .
Bước 6. Xuất tiến trình tập lệnh và làm cho nó có thể đọc được

Làm cách nào để chuyển đổi truy vấn SQL thành MongoDB?

Mở Di chuyển SQL sang MongoDB .
Nhấp vào nút Di chuyển SQL trên thanh công cụ hoặc nhấp chuột phải vào máy chủ, cơ sở dữ liệu hoặc bộ sưu tập trong Cây kết nối và chọn tùy chọn Di chuyển SQL
Sau đó chọn SQL → Di chuyển MongoDB. Điều này sẽ mở một tab mới nơi bạn có thể định cấu hình và thực hiện nhập