MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tạo dữ liệu thử nghiệm cho MongoDB

Giới thiệu:Ví dụ này minh họa một phương pháp cũ hơn sử dụng IRI RowGen để tạo và điền các nguyên mẫu thu thập lớn hoặc phức tạp để kiểm tra hoặc dung lượng hệ thống bằng cách sử dụng tệp phẳng. Như bạn sẽ đọc, RowGen sẽ tạo dữ liệu thử nghiệm cần thiết và tạo tệp CSV sẽ được tải vào MongoDB bằng Tiện ích nhập khẩu Mongo.

Cập nhật năm 2019:IRI hiện cũng cung cấp JSON và hỗ trợ trình điều khiển trực tiếp để di chuyển dữ liệu giữa các bộ sưu tập MongoDB và các sản phẩm phần mềm IRI tương thích với SortCL như RowGen hoặc FieldShield. Điều này có nghĩa là bạn có thể sử dụng RowGen để tạo các tệp JSON thử nghiệm để nhập vào MongoDB (không giống như phương pháp được hiển thị bên dưới trong bài viết này) hoặc sử dụng FieldShield để ẩn dữ liệu trong bảng Mongo thành các mục tiêu thử nghiệm.

Lưu ý rằng cả FieldShield và RowGen đều được bao gồm trong nền tảng quản lý dữ liệu IRI Voracity, nền tảng này cung cấp bốn cách để tạo dữ liệu thử nghiệm.

Mặc dù MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu, đa nền tảng tốt, nó không có cách nào thuận tiện để tạo và điền các nguyên mẫu thu thập lớn hoặc phức tạp có thể được sử dụng để kiểm tra các truy vấn hoặc lập kế hoạch dung lượng. Bài viết này giải thích cách tạo dữ liệu thử nghiệm mà MongoDB có thể sử dụng thông qua IRI RowGen, chỉ định các tham số cho tệp CSV tổng hợp, nhưng thực tế, mà MongoDB có thể nhập để kiểm tra chức năng và hiệu suất.

Trước tiên, bạn phải xem xét cấu trúc và nội dung của dữ liệu thử nghiệm cho nhu cầu thu thập (bảng MongoDB) của bạn. Xem bài viết này để biết các cân nhắc lập kế hoạch điển hình.

Trong ví dụ này, chúng tôi biết rằng bộ sưu tập của chúng tôi sẽ bao gồm những khách hàng có Tên người dùng , Họ và Tên , Địa chỉ email Số thẻ tín dụng .

Để tạo dữ liệu thử nghiệm, trước tiên chúng ta phải tạo một số tập hợp tệp. Tập hợp tệp là danh sách một hoặc nhiều giá trị được phân cách bằng tab có thể đã tồn tại hoặc cần được tạo theo cách thủ công hoặc tự động từ các cột cơ sở dữ liệu thông qua trình hướng dẫn 'Tạo tệp bộ mới' trong IRI RowGen.

Tạo Tên

1) Tạo một giá trị dữ liệu phức hợp (họ và tên kết hợp) kịch bản lệnh có tên là “CreateNamesSet.rcl” mà RowGen có thể thực thi để tạo ra một tập tin; gọi đầu ra là “User.set” vì những tên này cũng sẽ được sử dụng làm cơ sở cho tên người dùng của chúng tôi.

2) Tạo ba trường sẽ được tạo trong Names.set:họ, dấu phân cách tab và tên. Đặt tên cho trường đầu tiên là “LastName” và chọn phương thức sẽ chọn các giá trị từ một tập hợp do IRI cung cấp có tên là “names_last.set”. Thêm giá trị chữ “\ t” để thêm dấu phân cách tab, sau đó lặp lại quy trình được sử dụng cho các giá trị LastName và FirstName bằng cách sử dụng names_first.set.

3) Chạy CreateNamesSet.rcl với RowGen, trên dòng lệnh hoặc từ IRI Workbench GUI, để tạo tệp User.set được phân tách bằng tab của họ và tên, sẽ được sử dụng trong cả việc tạo tên người dùng và trong bản dựng tệp thử nghiệm cuối cùng để điền vào bộ sưu tập nguyên mẫu của chúng tôi.

Tạo Tên người dùng

Đối với Tên người dùng, chúng tôi sẽ tạo một tập hợp tệp sử dụng tệp Users.set đã tạo ở trên. Tên người dùng cho ví dụ này sẽ kết hợp họ, tên viết tắt đầu tiên và một số được tạo ngẫu nhiên từ 100 đến 999.

1) Tạo một tập lệnh công việc RowGen mới bằng Trình hướng dẫn Dữ liệu Kết hợp, gọi nó là “CreateUsernamesSet.rcl” và đặt tên cho tệp tập hợp đầu ra là “Usernames.set”.

2) Tạo giá trị tên người dùng kết hợp với ba thành phần có tên Part1, Part2 và Part3.

3) Đối với Phần 1, hãy chọn phương pháp sẽ chọn các giá trị từ (duyệt tới) tệp User.set được tạo trước đó và chỉ định 'TẤT CẢ' cho loại lựa chọn để duy trì liên kết giữa những người dùng, tên người dùng và địa chỉ email. Đặt kích thước thành 5.

4) Đối với Phần 2, hãy lặp lại quy trình được sử dụng cho Phần 1, ngoại trừ loại Lựa chọn, hãy chọn 'Hàng' và đặt Chỉ mục cột thành 2. Đặt kích thước thành 1. Điều này đảm bảo tất cả các họ sẽ được sử dụng trong thế hệ, và chữ cái đầu tiên của tên đầu tiên trong cùng một hàng được thêm vào tên người dùng.

5) Đối với Phần 3, chỉ định việc tạo giá trị số từ 100 đến 999 để tạo hậu tố cho một số nguyên ngẫu nhiên với mỗi tên người dùng.

Khi thực thi CreateUsernamesSet.rcl, chúng tôi thấy rằng mỗi tên người dùng chứa năm chữ cái đầu tiên trong họ của họ, sau đó là chữ cái đầu tiên của họ, sau đó là số 3 chữ số ngẫu nhiên:

Tạo Email

Tiếp theo, chúng tôi sẽ tạo một tệp bộ email gắn các giá trị tên người dùng với các tên miền được chọn ngẫu nhiên. Vì một số dịch vụ email phổ biến hơn những dịch vụ khác, chúng tôi cũng sẽ tạo hệ thống trọng số để phản ánh tần suất sử dụng miền yahoo và gmail cao hơn.

1) Chạy trình hướng dẫn công việc ‘Dữ liệu thử nghiệm tùy chỉnh mới’ của RowGen để tạo một công việc có tên “CreateEmailsSet” tạo ra một tập hợp tệp có tên “Emails.set”.

2) Tạo phần tên người dùng của email. Trong hộp thoại Định nghĩa Dữ liệu Kiểm tra, bấm Trường Mới và đổi tên Trường đầu tiên Tên người dùng. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là Usernames.set. Đặt kích thước thành 9 và nhấp vào OK.

3) Tạo phần miền của email (bao gồm ký hiệu @). Trong hộp thoại Trường bố trí, nhấp vào Trường mới và đổi tên trường thành “địa chỉ” và nhấp đúp vào trường. Trong hộp thoại Trường tạo, chỉ định a ”,” với vị trí là 10 và kích thước là 20. Trong phần Tạo dữ liệu / Phân phối dữ liệu bên dưới, hãy nhấp vào “Xác định…” để đặt tên cho phân phối dữ liệu mới của các mục là “Thư có trọng số”.

4) Trong Trình hướng dẫn phân phối mới, chọn 'Phân phối theo trọng số của các mục' và nhập các mục này tương ứng vào các hộp văn bản tỷ lệ và theo nghĩa đen, sau đó thêm từng mục vào danh sách.

(32 | @gmail.com), (32 | @yahoo.com), (2 | @ibm.com), (4 | @msn.com), (2 | @ymail.com), (2 | @inmail.com), (2 | @cnet.net), (2 | @chase.org), (1 | @iri.com), (1 | @gdic.com), (1 | @aci.com), (2 | @oracle.net), (1 | @gmx.org), (4 | @aol.com), (2 | @inbox.com), (2 | @hushmail.com), (2 | @outlook.com), (2 | @zoho.com), (2 | @yandex.net), (2 | @mail.com)

Sau khi bạn nhập các giá trị này, hãy nhấp vào Tiếp theo trong trình hướng dẫn ban đầu để chuyển sang hộp thoại Mục tiêu Dữ liệu. Sử dụng “Thêm mục tiêu dữ liệu…” để chỉ định tệp đầu ra “Email.set”. Điều này cũng sẽ được sử dụng tại thời điểm xây dựng bộ sưu tập.

Email chúng tôi đặt trọng số cao nhất cho (gmail và yahoo) hiển thị thường xuyên nhất, những email khác hiển thị định kỳ.

Tạo số thẻ tín dụng

Cuối cùng, chúng tôi sẽ tạo các số thẻ hợp lệ về mặt tính toán ở định dạng XXXX-XXXX-XXXX-XXXX. Bốn chữ số đầu tiên phản ánh Số nhận dạng vấn đề (IIN) thực tế của các công ty thẻ tín dụng khác nhau và chữ số cuối cùng xác minh tính xác thực của thẻ.

Để thực hiện việc này, hãy tạo và chạy một công việc mới (trống). Gọi nó là “CreateCCNSet.rcl” (hoặc .scl) và điền nó với tập lệnh bên dưới để tạo “CCN.set”. Giá trị / INCOLLECT trong các tập lệnh RowGen xác định số hàng được tạo.

Hàm tạo CCN có mục đích của RowGen, ccn_gen (“ANY,“ - “) được gọi để điền trường này. Lưu ý rằng các chức năng tương tự tồn tại đối với số an sinh xã hội của Hoa Kỳ và Hàn Quốc cũng như ID quốc gia của Ý và Hà Lan.

Tạo Tệp Kiểm tra Cuối cùng

Với tất cả các tệp đã thiết lập được tạo, đã đến lúc sử dụng chúng trong tệp CSV thử nghiệm mà chúng tôi sẽ tạo và xuất sang bộ sưu tập MongoDB.

1) Chạy trình hướng dẫn công việc 'Dữ liệu kiểm tra tùy chỉnh mới' của RowGen để tạo một công việc có tên là “CreateMongoUserData.rcl” sẽ tạo tệp Customer.csv, tệp sau đó chúng tôi sẽ xuất sang MongoDB.

2) Nhấp vào “Trường Bố cục…” để vào Hộp thoại Trường Bố trí. Nhấp vào Trường mới và đổi tên trường đầu tiên thành Tên người dùng. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là Usernames.set; sau đó chọn TẤT CẢ cho loại lựa chọn của nó.

3) Nhấp vào Trường mới và đổi tên trường thứ hai thành LastNames. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là Users.set; sau đó chọn TẤT CẢ cho loại lựa chọn của nó.

4) Nhấp vào Trường mới và đổi tên trường thứ ba thành FirstNames. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là Users.set; sau đó chọn ROWS cho loại lựa chọn của nó và đặt chỉ mục cột thành 2.

5) Nhấp vào Trường mới và đổi tên trường thứ tư thành Email. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là Emails.set; sau đó chọn TẤT CẢ cho loại lựa chọn của nó.

6) Nhấp vào Trường mới và đổi tên trường thứ năm thành CreditCardNumbers. Nhấp đúp vào nó để khởi chạy hộp thoại Trường tạo và “Xác định…”. Đặt tệp của nó là CCN.set; sau đó chọn TẤT CẢ cho loại lựa chọn của nó.

7) Sau khi bạn nhập các giá trị này, hãy nhấp vào Tiếp theo trong trình hướng dẫn ban đầu để chuyển sang hộp thoại Mục tiêu Dữ liệu. Sử dụng “Thêm mục tiêu dữ liệu…” để chỉ định tệp đầu ra Customer.csv; sau đó chạy tập lệnh trong Workbench hoặc trên dòng lệnh để tạo tệp đó:

rowgen /spec=CreateMongoUserData.rcl

Lưu ý rằng RowGen, ngoài việc tạo tệp CSV này trong thời gian chạy, cũng có thể tạo ra nhiều tệp khác, cơ sở dữ liệu, báo cáo được định dạng, có tên-pipe, thủ tục và thậm chí cả hiển thị BIRT thời gian thực , với các trường từ dữ liệu thử nghiệm đã tạo, tất cả cùng một lúc.

Đang nhập vào MongoDB

Để nhập tệp CSV vào Cơ sở dữ liệu Mongo của bạn, hãy gọi 'tiện ích mongoimport' và chạy lệnh sau:

--db <Database Name> --collection <Collection Name> --type csv --fields <fieldname1,fieldname2,...> --file <File path to the CSV file to import>

Đây là các bản ghi trong bộ sưu tập thử nghiệm (hiển thị với MongoVUE), MongoDB sẽ tự động lập chỉ mục với các giá trị ID được tạo cho mỗi mục nhập:

MongoDB chỉ định một giá trị ID duy nhất cho mỗi mục nhập bộ sưu tập.

Bạn cũng có thể tải dữ liệu thử nghiệm trực tiếp vào Cơ sở dữ liệu Mongo bằng cách sử dụng trình điều khiển ODBC DataDirect ODBC của Phần mềm Tiến bộ cho MongoDB. Trước khi chạy công việc RowGen trong Workbench, tôi có một bộ sưu tập trống có tên CUSTOMERS_CNN trong MYDB để nhận dữ liệu.

Tôi đã chạy công việc đầu tiên bằng cách sử dụng stdout, để xem trước dữ liệu thử nghiệm của tôi trong cửa sổ bảng điều khiển:

Sau khi thực thi tập lệnh trong Workbench, bây giờ tôi có thể xem dữ liệu của mình bằng Trình khám phá nguồn dữ liệu và trình điều khiển JDBC của DataDirect.

Để biết thêm thông tin về các tùy chọn tạo có sẵn, hãy xem Mục tiêu tệp kiểm tra tại:http://www.iri.com/products/rowgen/technical-details.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kiểm tra trường tồn tại bằng MongoDB

  2. Có ai đã thử MongoDB trên Google App Engine không?

  3. Truy cập cơ sở dữ liệu sản xuất Meteor

  4. Làm cách nào để MongoDB tránh được mớ hỗn độn về SQL injection?

  5. Nối dữ liệu vào tệp gridfs hiện có