PemiluDB
Penelitian & Motivasi
Brainstorming awal kami memperjelas bahwa tidak banyak layanan yang menyimpan dan menyajikan data pemilu kepada masyarakat umum dan bahkan outlet berita. Melalui proyek ini, kami ingin menjembatani kesenjangan tersebut dengan menyediakan informasi seperti Transaksi Partai dan Demografi Pemilih Tingkat Lanjut yang tidak dilaporkan di outlet berita mana pun atau disimpan oleh database saat ini.
Basis data saat ini seperti http://www.indiavotes.com meskipun memberikan hasil pasca pemilu seperti jumlah pemilih dan penutupan kontes, gagal memberikan informasi apa pun yang mungkin membantu memprediksi pemilu. Selain itu, tidak ada informasi tentang petugas pemilu atau EVM. Kami percaya bahwa data ini sangat penting dalam kelancaran fungsi pemilu dan kami memastikan untuk memasukkannya ke dalam proyek kami. Kami berharap bahwa proyek kami akan membantu menciptakan pemilu yang terinformasi dengan baik di masa mendatang dan dengan menggunakan proyek kami, setiap orang dapat menganalisis pilihan mereka dengan lebih baik.
Ringkasan
Kami telah menciptakan Sistem Basis Data Pemilu India yang menyimpan informasi tentang pemilu, pemilih, komisi pemilu, kandidat, dan partai politik. Melalui situs kami, pengguna dapat memiliki akses ke semua data yang mereka butuhkan.
Asumsi: Kami memiliki akses ke semua data tentang partai dan pemilu.
Pemangku kepentingan utama kami adalah Pemilih, Partai Politik, Media, dan Peneliti Independen.
- Bagi Pemilih, Anda dapat melihat berapa banyak uang yang dikeluarkan partai politik untuk iklan menggunakan grafik yang mudah dipahami. Perbandingan kandidat politik yang berbeda dalam pendidikan, sejarah politik, dan catatan kriminal. Selain itu, perincian pengeluaran partai juga akan membantu dalam memantau penggunaan uang pajak dan menjadikan penyalahgunaan uang sebagai sorotan publik.
- Untuk Partai Politik, Anda akan mendapatkan demografi pemilih di seluruh daerah pemilihan di berbagai lini. Selain itu, mereka juga dapat mengakses informasi tentang kandidat dari partai lain dan dapat menyusun strategi kandidatnya.
- Bagi Media dan Peneliti Independen, Anda dapat menggabungkan data pemilih dan data partai untuk menganalisis alasan sebuah partai politik mampu memenangkan suatu daerah pemilihan. Selain itu, dengan menganalisis data lebih lanjut, Anda dapat memberikan wawasan yang lebih baik mengenai tren pemungutan suara. Data pengeluaran partai dan riwayat kandidat juga dapat berguna bagi lembaga/individu tersebut.
- Bagi KPU, pencatatan seluruh petugas yang terlibat dalam proses pemilu akan memudahkan administrasi dan juga memperlancar proses penjatahan petugas di setiap distrik. Selain itu, informasi EVM akan berguna untuk menemukan dan mengganti mesin yang rusak
Desain Teknis
Bagian belakang
Kami memutuskan untuk menggunakan Django Framework di aplikasi kami karena ini adalah kerangka web berbasis python dan mengikuti pola arsitektur model-template-view yang membuatnya sangat skalabel.
Masalah utama yang kami temui/antisipasi selama proyek kami di bagian backend adalah:
- Cara mengontrol beberapa permintaan pembaruan ke database secara bersamaan - Untuk ini kami memutuskan untuk menggunakan kunci di server kami. Setelah thread memperoleh kunci, semua upaya selanjutnya untuk memperoleh kunci diblokir hingga thread tersebut dilepaskan. Dan utas perlu mendapatkan kunci sebelum menjalankan kueri ke database. Dengan demikian kunci tersebut memastikan bahwa hanya satu klien yang dapat memperbarui database pada satu waktu.
- Beberapa kueri sekaligus - Untuk mengatasi masalah ini, kami memutuskan untuk memproses setiap permintaan klien di thread baru yang membantu kami memberikan respons lebih cepat karena permintaan klien tidak perlu menunggu permintaan lain selesai. Kami melihat penurunan yang signifikan dalam waktu penggunaan thread untuk setiap permintaan.
- Situasi kehilangan koneksi ke database - Kami mengantisipasi kemungkinan besar koneksi ke database terputus dan untuk ini kami membuat tabel log di server kami yang menyimpan entri setiap transaksi yang dilakukan server dengan database.
- Membuat memori cache di server - Karena database terus mendapatkan pembaruan, kita perlu memberikan nilai yang diperbarui kepada klien setiap kali nilainya diperbarui. Jadi untuk ini kami memutuskan untuk membuat memori cache yang akan diperbarui setiap kali seseorang memperbarui database. Hal ini juga membantu menghemat biaya pengiriman kueri ke database untuk setiap pengguna karena cache yang diperbarui ini dikirimkan dan hanya satu permintaan yang cukup untuk semua pengguna.
Bagian depan
Kami menggunakan VanillaJS dengan HTML dan CSS untuk membuat frontend.
Masalah utama yang kami temui/antisipasi selama proyek kami di bagian backend adalah:
- Memperbarui grafik dan tabel di halaman web secara dinamis - Kami mengantisipasi bahwa database mungkin diperbarui oleh pengguna lain saat seseorang menjelajahi situs web kami dan pengguna tidak dapat terus menyegarkan halaman web untuk mendapatkan pembaruan. Jadi untuk mengatasi masalah ini kami memutuskan untuk menggunakan fungsi AJAX untuk memperbarui grafik dan tabel secara dinamis bagi pengguna tanpa perlu menyegarkan halaman web. Selain itu, ini sangat efisien karena mengambil data dari memori cache dari server dan tidak perlu mengirimkan kueri ke database.
Basis data
Kami telah membuat Tabel untuk setiap pemangku kepentingan untuk menyimpan detail mereka dan beberapa tabel untuk menjalin hubungan di antara mereka. Untuk tabel yang memiliki data besar seperti pemilih, kami telah membuat tabel indeksnya agar kami dapat mengakses datanya dengan cepat. Kami juga telah melakukan normalisasi database agar mudah dipahami dan lebih efisien untuk diupdate.
Basis data diterbitkan di Server Microsoft Azure dan dapat diakses menggunakan Perangkat Lunak Manajemen Microsoft SQL Server.
Dokumentasi
Pengguna harus melakukan hal berikut untuk menjalankan proyek ini:
- Karena proyek ini diimplementasikan dalam Django Framework, pengguna harus menginstal Django di mesinnya dan kemudian pergi ke direktori proyek DBMS_PROJECT/django_project
- Setelah membuka direktori ini, pengguna harus menjalankan perintah berikut:
python manage . py runserver
- Setelah ini pengguna dapat melihat baris berikut:
You have 17 unapplied migration ( s ). Your project may not work properly until you apply the migrations for app ( s ): admin , auth , content types , sessions .
Run 'python manage.py migrate' to apply them .
April 30 , 2020 - 14 : 41 : 47
Django version 3.0 . 5 , using settings 'django_project.settings'
Starting development server at http : // 127.0 . 0.1 : 8000 /
Quit the server with CTRL - BREAK .
- Buka tautan localhost. Proyek kemudian akan terbuka di browser.
Implementasi Bonus
Kami telah membuat pemilu virtual yang memungkinkan kami memperkirakan hasil pemilu sebelum hasil sebenarnya. Seorang pengguna masuk ke situs kami dan memilih kandidat, setelah selesai dia tidak diperbolehkan untuk memilih lagi. Dengan cara ini kami membuat tabel dengan rincian pemilih dan suaranya dan setelah beberapa waktu tertentu, kami mengumumkan perkiraan hasil kepada pengguna kami.
Dengan cara ini kami memberikan hasilnya kepada pengguna sebelum suara sebenarnya mulai dihitung.
Kami membuat layanan yang sangat efisien yang melacak transaksi, memelihara memori cache, menjaga kunci konkurensi, dan memberikan hasil yang cepat menggunakan multi-threading. Detailnya disebutkan dalam desain teknis.
Kami membuat halaman web yang sangat efisien yang memungkinkan pengguna untuk terus mendapatkan data terbaru tanpa harus menyegarkan halaman web. Detailnya disebutkan dalam desain teknis.
diagram UGD
Tautan: https://app.creately.com/diagram/knHC7u2yS86/
Rekan Kontributor
- Bhavay Aggarwal 2018384
- Diptanshu Mittal 2018232
- Manas 2018244
- Rishabh Chauhan 2018256