Menggunakan Firestore

Firestore adalah database dokumen NoSQL yang dibangun untuk penskalaan otomatis, performa tinggi, dan kemudahan pengembangan aplikasi. Sebagai pengganti Datastore, Firestore adalah database yang direkomendasikan untuk semua aplikasi baru. Firestore menawarkan beberapa antarmuka, termasuk API yang kompatibel dengan Datastore untuk mendukung kode lama yang dibuat di Datastore.

Dokumen ini menjelaskan cara menggunakan Library Klien Cloud untuk menyimpan dan mengambil data dalam database mode Datastore. Anda dapat menggunakan aplikasi contoh dalam panduan ini untuk versi Python yang didukung dengan menentukan versi runtime dan sistem operasi dalam file app.yaml.

Prasyarat dan penyiapan

  • Siapkan lingkungan dan project Anda untuk memahami cara aplikasi disusun di App Engine. Tuliskan dan simpan project ID Anda karena Anda akan membutuhkannya untuk menjalankan aplikasi contoh yang dijelaskan dalam dokumen ini.

Membuat cloning repositori

Download (membuat clone) contoh:

  git clone https://github.com/GoogleCloudPlatform/python-docs-samples
  cd python-docs-samples/appengine/flexible/datastore

Mengedit konfigurasi project dan menetapkan dependensi

Sertakan library google-cloud-datastore dalam file requirements.txt. Ini adalah library klien untuk mode Datastore.

Flask==3.1.3; python_version >= '3.9'
google-cloud-datastore==2.20.2
gunicorn==23.0.0

Kode aplikasi

Aplikasi contoh mencatat, mengambil, dan menampilkan IP pengunjung. Anda dapat melihat bahwa entri log adalah class dua kolom yang diberi jenis visit, dan disimpan ke mode Datastore menggunakan perintah put. Kemudian, sepuluh kunjungan terbaru diambil dalam urutan menurun menggunakan perintah query().

@app.route("/")
def index():
    ds = datastore.Client()

    user_ip = request.remote_addr

    # Keep only the first two octets of the IP address.
    if is_ipv6(user_ip):
        user_ip = ":".join(user_ip.split(":")[:2])
    else:
        user_ip = ".".join(user_ip.split(".")[:2])

    entity = datastore.Entity(key=ds.key("visit"))
    entity.update(
        {
            "user_ip": user_ip,
            "timestamp": datetime.datetime.now(tz=datetime.timezone.utc),
        }
    )

    ds.put(entity)
    query = ds.query(kind="visit", order=("-timestamp",))

    results = []
    for x in query.fetch(limit=10):
        try:
            results.append("Time: {timestamp} Addr: {user_ip}".format(**x))
        except KeyError:
            print("Error with result format, skipping entry.")

    output = "Last 10 visits:\n{}".format("\n".join(results))

    return output, 200, {"Content-Type": "text/plain; charset=utf-8"}

Menggunakan index.yaml file

Aplikasi contoh menjalankan kueri. Kueri mode Datastore yang lebih rumit memerlukan satu atau beberapa indeks, yang harus Anda tentukan dalam index.yaml file yang Anda upload bersama aplikasi Anda. File ini dapat dibuat secara manual, atau dibuat secara otomatis saat menguji aplikasi Anda secara lokal.

Pengujian lokal

Jika perlu mengembangkan dan menguji aplikasi secara lokal, Anda dapat menggunakan emulator mode Datastore.

Untuk informasi selengkapnya

Untuk mengetahui informasi selengkapnya tentang mode Datastore, termasuk pengoptimalan dan konsep, lihat dokumentasi Firestore dalam mode Datastore.