Saya memiliki mesin negara yang perlu mendorong / pop beberapa nama file untuk pengguna yang berbeda. Secara tradisional saya akan menggunakan tumpukan sebagai pilihan struktur data, tetapi ini perlu dilakukan dengan menggunakan database karena saya tidak memiliki cara untuk mempertahankan struktur data antara permintaan web yang masuk.
Saya bertanya-tanya apa yang akan menjadi cara yang baik untuk mengimplementasikan fungsionalitas stack menggunakan database?
Saya perlu mendukung:
- push (nama file, pengguna): mendorong nama file untuk pengguna
- pop (pengguna): Pop nama file paling atas untuk pengguna
EDIT :
Saya membuat prototipe ide, dan jadi saya menggunakan sqlite3 dengan python.
Terima kasih!
database-design
database-recommendation
brainydexter
sumber
sumber
Jawaban:
Jika Anda bertanya tentang basis data mana yang akan digunakan, itu benar-benar tergantung pada preferensi pribadi dan apa yang Anda inginkan darinya. Karena saya hanya terbiasa dengan MySQL, saya akan menjawab bagian lain dari pertanyaan dengan asumsi MySQL:
Anda akan ingin menggunakan
INNODB
karena meja Anda akan menjadi intensif menulis dan untuk tabel besar, penguncian baris INNODB akan menjadi penyelamatMyISAM
.Sejauh desain meja, tampaknya Anda hanya benar-benar membutuhkan satu tabel:
Aku pergi dengan kolom 'id' sewenang-wenang yang diatur ke
AUTO_INCREMENT
karena kunci utama direplikasi di setiap entri setiap indeks. Jadi, melakukan kunci utama (pengguna, nama file) dapat menyebabkan masalah kinerja jika nama file Anda terlalu panjang.Ukuran kolom 'id' Anda tergantung pada seberapa besar tabel Anda akan tumbuh. Smallint yang tidak ditandatangani akan memberi Anda baris 65 ribu.
Pengguna dan nama file adalah varchar, karena panjangnya akan bervariasi secara drastis.
Ini
date_insert
hanyalah cara untuk memesan hasil berdasarkan kapan dimasukkan (membantu POP Anda)sumber
Jika Anda mempertimbangkan database Oracle, Anda harus mempertimbangkan untuk menggunakan Antrian Lanjutan dengan pola dequeue LIFO (last in first out) .
sumber