Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP · Pelajaran

Asas dan Skema Mnesia

Fahami seni bina Mnesia, jenis jadual dan cara mentakrif skema untuk data teragih anda

Pelajaran 1 daripada 411 langkah

Asas dan Skema Mnesia ialah pelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP merangkumi sejumlah 4 pelajaran.

Selamat Datang ke Mnesia!

Mnesia ialah pangkalan data teragih terbina dalam Erlang. Ia direka bentuk untuk ketersediaan tinggi, toleransi terhadap kegagalan dan sistem masa nyata lembut, menjadikannya sesuai untuk aplikasi Erlang serentak.

Anggaplah Mnesia sebagai pangkalan data terbenam yang berkuasa dan bersepadu dengan lancar dengan model keserentakan Erlang.

Kekuatan Teras Mnesia

Mnesia menawarkan ciri-ciri utama yang selaras dengan falsafah Erlang:

  • Teragih: Ia boleh merentasi berbilang nod Erlang.
  • Berurus niaga: Menjamin keatomikan, ketekalan, pengasingan dan ketahanan (ACID) untuk operasi data.
  • Tahan kegagalan: Mengendalikan kegagalan nod dan replikasi data secara automatik.
  • Penyimpanan hibrid: Menyokong jadual dalam memori dan berasaskan cakera.

Memulakan Mnesia

Sebelum anda boleh menggunakan Mnesia, anda perlu memulakan aplikasi Mnesia dan kemudian pengurus pangkalan data Mnesia. Ini ialah langkah pertama yang lazim apabila bekerja dengan Mnesia.

Cuba jalankan contoh mudah ini:

-module(mnesia_lesson_start).
-export([run/0]).

run() ->
    % 1. Start the Mnesia application
    application:start(mnesia),
    io:format("Mnesia application started.~n"),

    % 2. Start the Mnesia database manager
    mnesia:start(),
    io:format("Mnesia database started successfully!~n"),

    % Clean up (important for simple runnable examples)
    mnesia:stop(),
    application:stop(mnesia),
    ok.

Apakah Skema Mnesia?

Skema Mnesia mentakrifkan struktur keseluruhan pangkalan data Mnesia anda. Skema ini menentukan jadual yang wujud, sifatnya dan cara jadual tersebut disimpan merentasi nod yang berbeza.

Skema itu sendiri disimpan dalam jadual Mnesia khas yang dipanggil mnesia_schema.

Mencipta Skema

Skema mesti dicipta sekali untuk keseluruhan sistem Mnesia (kelompok nod). Anda menggunakan mnesia:create_schema/1 dengan menghantar senarai nama nod yang akan menyertai sistem Mnesia.

Begini cara mencipta skema untuk satu nod:

-module(mnesia_lesson_schema).
-export([run/0]).

run() ->
    application:start(mnesia),

    % Create schema for the current node
    case mnesia:create_schema([node()]) of
        ok -> io:format("Mnesia schema created.~n");
        {error, {already_exists, _}} ->
            io:format("Schema already exists. (This is fine if run before)~n");
        Error -> io:format("Error creating schema: ~p~n", [Error])
    end,

    application:stop(mnesia),
    ok.

Asas Jadual Mnesia

Mnesia menyimpan data dalam jadual, sama seperti pangkalan data hubungan. Setiap jadual mempunyai nama dan sekumpulan atribut (lajur).

  • Jadual adalah dinamik dan boleh dicipta atau dipadam semasa masa jalan.
  • Jadual boleh direplikasi merentasi berbilang nod untuk toleransi terhadap kegagalan.
  • Mnesia menyokong pelbagai jenis penyimpanan untuk jadual.

Memahami Jenis Jadual

Mnesia menawarkan pelbagai jenis jadual untuk memenuhi keperluan yang berbeza:

  • ram_copies: Data disimpan hanya dalam RAM. Akses paling pantas, tetapi data hilang jika nod mengalami kerosakan.
  • disc_copies: Data disimpan dalam RAM dan turut direplikasi ke cakera. Menyediakan ketekalan dan prestasi yang baik.
  • disc_only_copies: Data disimpan hanya pada cakera. Akses lebih perlahan, tetapi menggunakan kurang RAM dan kekal disimpan.

Pemilihan jenis yang sesuai bergantung pada keperluan ketahanan penyimpanan dan prestasi data anda.

Mentakrifkan Jadual dengan Rekod

Dalam Erlang, jadual Mnesia biasanya ditakrifkan menggunakan rekod. Pengisytiharan rekod menentukan nama jadual (nama rekod) dan atributnya (medan rekod).

Contohnya, rekod #user{} akan mentakrifkan jadual user dengan medan tertentu seperti id, name dan email.

Mencipta Jadual Pertama Anda

Mari gabungkan perkara yang telah kita pelajari! Contoh ini akan memulakan Mnesia, memastikan skema wujud, mentakrifkan rekod user dan kemudian mencipta jadual user dengan penyimpanan disc_copies.

Jalankan ini untuk melihat persediaan Mnesia lengkap bagi jadual asas!

-module(mnesia_lesson_create_table).
-export([run/0]).

% Define the user record for our table
-record(user, {id, name, email}).

run() ->
    % 1. Start the Mnesia application
    application:start(mnesia),
    io:format("Mnesia application started.~n"),

    % 2. Create schema (if it doesn't exist)
    case mnesia:create_schema([node()]) of
        ok -> io:format("Mnesia schema created.~n");
        {error, {already_exists, _}} ->
            io:format("Schema already exists (skipping creation).~n");
        Error -> io:format("Error creating schema: ~p~n", [Error])
    end,

    % 3. Start the Mnesia database manager
    mnesia:start(),
    io:format("Mnesia database started.~n"),

    % 4. Create the 'user' table
    % Options: [{disc_copies, [node()]}] means persistent table on this node
    case mnesia:create_table(user, [{disc_copies, [node()]}]) of
        {atomic, ok} ->
            io:format("Table 'user' created successfully (disc_copies).~n");
        {aborted, {already_exists, user}} ->
            io:format("Table 'user' already exists (skipping creation).~n");
        Error ->
            io:format("Error creating table: ~p~n", [Error])
    end,

    % Give Mnesia a moment
    timer:sleep(100),

    % 5. Stop Mnesia and the application
    mnesia:stop(),
    application:stop(mnesia),
    io:format("Mnesia stopped.~n"),
    ok.

Semakan Pantas

Jenis jadual Mnesia yang manakah menyimpan data hanya dalam memori dan kehilangannya jika nod mengalami kerosakan atau dimulakan semula?

Imbas Kembali Asas Mnesia

Syabas! Anda telah mengambil langkah pertama dalam mempelajari Mnesia. Kita telah membincangkan:

  • Apakah Mnesia dan ciri-ciri terasnya.
  • Cara memulakan Mnesia dan memulakan skemanya.
  • Konsep jadual Mnesia dan takrifnya menggunakan rekod Erlang.
  • Jenis jadual yang berbeza: ram_copies, disc_copies dan disc_only_copies.

Seterusnya, kita akan mendalami pelaksanaan urus niaga atomik dan manipulasi data dalam jadual ini!

Percuma untuk bermula

Pelajari Erlang dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Asas dan Skema Mnesia” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP, termasuk “Asas dan Skema Mnesia”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Asas dan Skema Mnesia”?

Fahami seni bina Mnesia, jenis jadual dan cara mentakrif skema untuk data teragih anda Anda berlatih Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “Asas dan Skema Mnesia” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP ini?

Ya. Setiap pelajaran Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Asas dan Skema Mnesia
  2. Transaksi dan Manipulasi Data
  3. Mnesia Teragih dan Replikasi
  4. Pengindeksan Mnesia dan Pengoptimuman Pertanyaan
← Kembali ke Pengaturcaraan Sistem Teragih dan Tahan terhadap Kegagalan dengan Erlang OTP