Skip to main content

High-performance columnar storage with zlib compression. Parquet alternative.

Project description

cemircol

Yüksek performanslı, sütun tabanlı (columnar) veri depolama kütüphanesi. Rust ile yazılan C-ABI (PyO3) tabanlı çekirdeği sayesinde zero-copy mmap işlemleri kullanarak muazzam okuma performansı sunar. Ayrıca flate2 (Zlib) üzerinden blok sıkıştırması yaparak verilerinizi Parquet'ten bile daha az alanda depolar.

Kurulum

pip install cemircol

(Kaynak koddan derlemek için Rust toolchain gereklidir: bash src/setup.sh veya maturin develop --release)

Özellikler

  • Mmap (Memory Mapped Files): Dosyaları belleğe eşleyerek RAM tüketimini minimize eder.
  • Zlib Sıkıştırma: Her sütunu bağımsız olarak maksimum seviyede (Level 9) sıkıştırır. Mükemmel "footprint" (ayak izi) sağlar.
  • Rust Core & PyO3 API: Veri işleme mantığı tamamen güvenli ve performanslı Rust dilinde yazılmıştır, Python'da hiçbir bağımlılık gerektirmez.
  • Doğrudan Çeviri (Converter): CSV ve Parquet dosyalarından anında CemirCol formatına dönüşüm.

Kullanım & Örnekler

Hızlı Başlangıç

from cemircol import CemircolWriter, CemircolReader

# Veri yazma
data = {"id": [1, 2, 3], "val": [1.1, 2.2, 3.3]}
CemircolWriter.write("data.cemir", data)

# Veri okuma
reader = CemircolReader("data.cemir")
print(reader.columns())       # ['id', 'val']
print(reader.num_rows())      # 3
print(reader.query("val"))    # [1.1, 2.2, 3.3]

CSV ve Parquet Formatından Çevirme (Converter)

Pandas kuruluysa ( pip install pandas pyarrow ) mevcut verilerinizi çok kolay bir şekilde CemirCol'a dönüştürebilirsiniz:

from cemircol import from_csv, from_parquet

# CSV'den çevirme
from_csv("sales_data.csv", "sales_data.cemir")

# Parquet'ten çevirme
from_parquet("analytics.parquet", "analytics.cemir")

Performans Karşılaştırma Testi (Benchmark)

Depoda bulunan benchmark.py dosyası ile 1 Milyon satırlık rastgele bir veri seti üzerinde yapılan test sonuçları:

Dosya Boyutları (Disk Tüketimi)

--- File Sizes ---
  CemirCol  : 2.87 MB   🥇 (En küçük dosya boyutu)
  Parquet   : 14.65 MB
  CSV       : 16.35 MB
  JSON      : 17.31 MB

Okuma Süreleri (Tek Bir Sütun)

--- Read Times (column: 'value') ---
  CemirCol  : 0.08362 s  🥇 (En hızlı okuma - Mmap)
  Parquet   : 0.28100 s
  JSON      : 0.56046 s
  CSV       : 3.00141 s

Parquet ve CemirCol sütun tabanlı mimaridedir ancak Cemircol okuma anında zero-copy yaklaşımı kullandığından anlık tepki süresi (latency) çok daha iyidir.

  • Muslu YÜKSEKTEPE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cemircol-0.1.0.tar.gz (12.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cemircol-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl (373.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

File details

Details for the file cemircol-0.1.0.tar.gz.

File metadata

  • Download URL: cemircol-0.1.0.tar.gz
  • Upload date:
  • Size: 12.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for cemircol-0.1.0.tar.gz
Algorithm Hash digest
SHA256 00565e899de05778166f31502123acb2323f79da6da5a80e60608b1220312577
MD5 4eb410bd3652bc6c76e65f9e53646b29
BLAKE2b-256 2bddcfa827c90cfc7efd51e6bf574b0e1a14deeacc3c7627644a784f2928258a

See more details on using hashes here.

File details

Details for the file cemircol-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for cemircol-0.1.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e6f6e03ab0674dd044a4d8ff3a42b795e96d54100c2df0c58d4140c0eaa2d211
MD5 2d5a6b088e37f9d4c2c2ffdeb9b61ad2
BLAKE2b-256 06a1b0756b9d6f4cb681f79c1f8cc1d47a99dbf0c29c58860defae7791d8e7c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page