PostgreSQL untuk transaksi volume tinggi dan untuk pergudangan Data

11

Saya cukup baru untuk PostgreSQL, saya belum pernah melakukan penyebaran besar menggunakannya sebelumnya. Tetapi, saya memiliki pengalaman yang baik dalam solusi perusahaan dan saya ingin mencoba dan menerapkan beberapa dari apa yang saya pelajari menggunakan PostgreSQL.

Saya memiliki situs yang berukuran untuk menangani sejumlah besar data dan lalu lintas. Infrastruktur akan dibangun menggunakan amazon (AWS) menggunakan instance EC2 dan volume EBS.

Desain harus memiliki dua database, basis data transaksional utama dan gudang data untuk menangani analisis dan pelaporan.

Basis data transaksional utama

akan digunakan untuk situs web langsung, situs ini dibangun di atas beberapa node untuk meningkatkan pengguna secara bersamaan. Terutama kami membutuhkan database untuk kasus ini sangat cepat dalam operasi membaca, kami mengharapkan data> 100GB dengan pertumbuhan tahunan 30%. Pada titik ini, kami berencana untuk menggunakan dua server EC2 ( dan menambahkan lebih banyak lagi sesuai kebutuhan ).

pertanyaan saya, pengaturan apa yang disarankan untuk persyaratan di atas? Plus, apakah ada cara untuk mengatur partisi tabel dan volume? apakah ada rekomendasi untuk menggunakan pengaturan AWS?

Database gudang data

Akan digunakan terutama untuk menangkap semua data dari database transaksional utama dalam dimensi waktu. jadi, bahkan catatan yang dihapus dari basis data utama akan ditangkap dalam DWH. Oleh karena itu, data akan sangat besar dan pertumbuhan akan semakin besar. Kami juga akan menggunakan instance EC2 pasangan atau lebih jika diperlukan.

Apa pengaturan yang disarankan dalam kasus ini? ini akan membutuhkan operasi penulisan cepat karena penulisan konstan (ETL). Bisakah kita membuat kubus OLAP di PostgreSQL? jika ya, apakah ada orang di luar sana yang mencobanya?

Menghubungkan ke database

Server web akan terhubung ke database utama untuk meminta dan menulis. Kami sedang mengembangkan aplikasi menggunakan Django yang menggunakan pustaka asli untuk menghubungkan. Apakah disarankan untuk menggunakan metode dasar yang sama? atau haruskah kita mengkonfigurasi pgpool?

Gudang data (ETL)

Apa cara yang disarankan untuk membangun proses ETL untuk membaca dari main dan memuat ke data warehouse? Ada alat? metodologi untuk diikuti? apakah PostgreSQL menawarkan fungsi / alat bantu dalam membangun proses ETL?

Mo J. Mughrabi
sumber
Mengenai penskalaan, Anda mungkin ingin membaca ini: stackoverflow.com/questions/10256923/...
a_horse_with_no_name

Jawaban:

3

Layanan Infrastruktur / Database

Anda mungkin harus membaca ini untuk ikhtisar situs volume tinggi yang berjalan pada AWS dengan EBS. Mereka telah pindah ke penyimpanan Ephemeral tetapi harus membuat beberapa redundansi untuk dapat (kembali) menyimpan data.

http://blog.reddit.com/2012/01/january-2012-state-of-servers.html

Gudang Data / ETL

Saya telah menggunakan Pentaho di masa lalu. Tidak secara langsung dengan postgres, tetapi saya telah menemukan itu menjadi solusi yang baik untuk OLAP (Mondrian) dan ETL (Ketel)

http://www.pentaho.com/

sunting: "Edisi Komunitas" dapat ditemukan di sini

http://mondrian.pentaho.com/

http://kettle.pentaho.com/

Koneksi

Orang-orang ini sepertinya sangat menyukai pgbouncer. /programming/1125504/django-persistent-database-connection

Saya tidak punya pengalaman dengannya. Rupanya, Disqus menggunakannya.

swasheck
sumber
0

Pengaturan Anda menyerupai yang saya kembangkan untuk universitas. Basis datanya tidak besar, tetapi cukup besar, berukuran sekitar 300GB dan tabel terbesar berisi sekitar 500 juta catatan. Dan masih terus berkembang.

Untuk tujuan itu, dua server yang benar-benar kekar (besi asli, bukan virtual), digunakan untuk menangani data dari situs web dan yang lainnya digunakan untuk perhitungan dan analisis statistik. Data direplikasi di kedua arah menggunakan Slony. Data OLTP direplikasi ke server OLAP terus menerus dan beberapa skema dan tabel tunggal direplikasi dari server OLAP ke OLTP. Dengan cara ini, perhitungan berat dapat dilakukan pada server analisis tanpa memengaruhi OLTP-server. Saat ini, ada beberapa alternatif untuk Slony untuk mereplikasi data: http://www.postgresql.org/docs/9.2/static/different-replication-solutions.html

Slony baik dan cepat untuk perhatian kita, tetapi mungkin guru yang keras.

Karena OLAP-server akan tumbuh dengan mantap, Anda harus mempertimbangkan untuk menggunakan semacam partioning jika berlaku.

Jika memungkinkan, gunakan pooling koneksi. Saya hanya menggunakan PgPool dan bekerja dengan sempurna. PgBouncer adalah opsi lain. Selain mengurangi latensi init juga mengurangi sesi startup dan manajemen sesi. http://momjian.us/main/blogs/pgblog/2012.html#April_25_2012

Manfaat lain dari menggunakan koneksi pool adalah bahwa Anda mendapat satu titik di mana Anda dapat dengan mudah mengarahkan lalu lintas Anda (ini tentu saja juga bisa menjadi risiko).

Saya belum menggunakan ETL readymade untuk memuat data ke server OLAP. Saya menulis skrip saya sendiri dengan Python karena beberapa data dikirim dalam file teks besar dengan format yang aneh.

Struktur basis data perlu dipertimbangkan dengan cermat. Menggunakan skema bagus untuk mengumpulkan dan memudahkan penanganan objek. Mungkin tampak rumit untuk memulai dengan menggunakan skema tetapi karena jumlah objek bertambah Anda akan berterima kasih pada diri sendiri. Mengetahui bahwa Anda harus secara eksplisit mengawali objek dengan skema mereka, Anda tahu persis objek yang Anda operasikan. http://momjian.us/main/blogs/pgblog/2012.html#April_27_2012

Bagi mereka yang berani PostgreSQL XC menjadi alternatif yang menarik atau hanya kostum kebesaran http://postgres-xc.sourceforge.net/

JohnP
sumber