Menggunakan Firestore dalam mode Datastore (Datastore)

Firestore adalah database dokumen NoSQL yang dibangun untuk penskalaan otomatis, performa tinggi, dan kemudahan pengembangan aplikasi. Ini adalah versi terbaru Datastore dan memperkenalkan beberapa peningkatan pada Datastore. Karena Firestore dalam mode Datastore (Datastore) dioptimalkan untuk kasus penggunaan server dan untuk App Engine, sebaiknya gunakan Datastore untuk database yang akan digunakan terutama oleh aplikasi App Engine. Firestore dalam mode Native paling berguna untuk kasus penggunaan notifikasi real-time dan seluler. Untuk mengetahui informasi selengkapnya tentang mode Firestore, lihat Memilih antara Mode Native dan mode 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.

  • 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.0.3
google-cloud-datastore==2.20.1
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 file index.yaml 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.