Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SQLite ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½Π° Π½ΡΠΆΠ½Π°?
- ΠΠ»Π°Π²Π½Π°Ρ
- Π’ΡΡΠΎΡΠΈΠ°Π»Ρ
- ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ
- SQLite
SQLite — ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΉ, Π±Π΅Π·ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ, Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΎΠ½Π½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ Π‘Π£ΠΠ SQL.
SQLite Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ, ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΡΠ·Π°ΡΡ Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π²Π°ΡΠΈΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ Π²Π°ΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.Β SQLite Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ²ΠΎΠΈΠΌ ΡΠ°ΠΉΠ»Π°ΠΌ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ SQLite
- SQLite Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ (Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ°).
- SQLite ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈΠ»ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
- ΠΠΎΠ»Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ SQLite Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΌ Π΄ΠΈΡΠΊΠ΅.
- SQLite ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ, ΠΌΠ΅Π½Π΅Π΅ 400KiB ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ 250KiB Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌΠΈ.
- SQLite ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½ΡΠΌ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
- SQLite-ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Ρ ACID, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌ.

- SQLite ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ², Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ SQL92 (SQL2).
- SQLite Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ANSI-C ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ API.
- SQLite Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² UNIX (Linux, Mac OS-X, Android, iOS) ΠΈ Windows (Win32, WinCE, WinRT).
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ SQLite
Π SQLite ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ SQL92:
| ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| RIGHT OUTER JOIN | ΠΠ½Π΅Π΄ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ LEFT OUTER JOIN. |
| FULL OUTER JOIN | ΠΠ½Π΅Π΄ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ LEFT OUTER JOIN. |
| ALTER TABLE | ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ RENAME TABLE ΠΈ ADD COLUMN ΠΊΠΎΠΌΠ°Π½Π΄Ρ ALTER TABLE.Β DROP COLUMN, ALTER COLUMN, ADD CONSTRAINT Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ. |
| Trigger support | ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠΈΠ³Π³Π΅ΡΠ° ROW ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ, Π½ΠΎ Π½Π΅ Π΄Π»Ρ ΡΡΠΈΠ³Π³Π΅ΡΠΎΠ² EACH STATEMENT.![]() |
| VIEWs | VIEWs Π² SQLite Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ.Β ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ DELETE, INSERT ΠΈΠ»ΠΈ UPDATE Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ. |
| GRANT ΠΈ REVOKE | ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²Π°ΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ, ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. |
ΠΠΎΠΌΠ°Π½Π΄Ρ SQLite
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ SQLite Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ SQL.Β ΠΡΠΎ CREATE, SELECT, INSERT, UPDATE, DELETE ΠΈ DROP.Β
| ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
| CREATE | Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . |
| ALTER | ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΡΠ°Π±Π»ΠΈΡΠ°.![]() |
| Π£Π΄Π°Π»ΡΠ΅Ρ Π²ΡΡ ΡΠ°Π±Π»ΠΈΡΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ . | |
| INSERT | Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π·Π°ΠΏΠΈΡΡ |
| UPDATE | ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ |
| DELETE | Π£Π΄Π°Π»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ |
| SELECT | ΠΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ |
Β
ΠΠ»ΠΎΠΊΠ½ΠΎΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ SQLiteβ Ruby Rush
ΠΠ° ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»ΠΈΡΡ Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ Π±Π°Π· Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQlite ΠΊ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° ruby: Π±Π»ΠΎΠΊΠ½ΠΎΡΡ.
ΠΠ»Π°Π½ ΡΡΠΎΠΊΠ°
- gem Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ SQlite
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΠ ΠΊ Π±Π»ΠΎΠΊΠ½ΠΎΡΡ
Π£ΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π‘Π£ΠΠ
Π‘Π£ΠΠ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· Π΄Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ: ΠΎΠ΄Π½ΠΎ (ΡΠ΅ΡΠ²Π΅Ρ) ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΈ ΠΊΡΡΡΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, Π° Π΄ΡΡΠ³ΠΎΠ΅ (ΠΊΠ»ΠΈΠ΅Π½Ρ) ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ². Π’Π°ΠΊΠΈΠ΅ Π‘Π£ΠΠ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌΠΈ, ΠΊ Π½ΠΈΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠ½ΠΎΡΡΡΡΡ Π‘Π£ΠΠ MySQL ΠΈ PostgreSQL.
SQlite Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π‘Π£ΠΠ. Π ΡΠ»ΡΡΠ°Π΅ Ρ SQLite ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π‘Π£ΠΠ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ Π½Π΅ΠΉ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΠΌΠΈ Π² (ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ) Π»ΡΠ±ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΠ ΠΎΠ±ΡΡΠ½ΠΎ Π΅ΡΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π³Π΄Π΅ ΡΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½.
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ, ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΠ΅ΠΌ ΠΠ Π΄Π»Ρ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ°
ΠΡ Ρ
ΠΎΡΠΈΠΌ, ΡΡΠΎΠ±Ρ Π½Π°Ρ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ SQlite-Π±Π°Π·ΠΎΠΉ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π²ΡΠ΅Ρ
Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΡ
ΡΠ°Π½ΡΡΡ Π½ΠΎΠ²ΡΡ Π·Π°ΠΏΠΈΡΡ Π² Π±Π°Π·Π΅ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° (Memo, Link, Task).
ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Π² ΠΠ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΡΡΡΠ½ΠΎΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠ°ΠΊΠΎΠ³ΠΎ-ΡΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ posts. ΠΠ°ΠΊ ΠΈ Ρ ΠΊΠ»Π°ΡΡΠ°, ΠΏΠΎΠ»Ρ Π² ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ³ΡΠ°ΡΡ ΡΡ ΠΆΠ΅ ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΡΡΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ. Π Π°Π·ΡΠΌΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ ΠΏΠΎΠ»Ρ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»Ρ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎ ΠΌΡ Π½Π΅ Ρ
ΠΎΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ
ΠΊΠ»Π°ΡΡΠΎΠ²: Memo, Link ΠΈ Task. Π’ΠΎΠ³Π΄Π° Ρ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°ΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ»Π΅ΠΉ: ΡΡΠΎΠ±Ρ ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ Π½ΠΈ Π±ΡΠ»Π° Π·Π°ΠΏΠΈΡΡ, ΠΌΡ Π±Ρ ΠΌΠΎΠ³Π»ΠΈ Π΅Ρ ΡΠ»ΠΎΠΆΠΈΡΡ Π² ΡΡΡΠΎΠΊΡ ΡΡΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ.
Π’Π°ΠΊΠΆΠ΅ Ρ Π½Π°Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠ»Π΅ type, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° Π·Π°ΠΏΠΈΡΡ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ SQlite ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
notepad.sqlite Π² ΠΏΠ°ΠΏΠΊΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΡΡΠΎΠΊΠ° c:\rubytut2\lesson12 ΠΈ Π² Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ°. ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° gem-Π° sqlite3
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π½Π°ΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ SQLite ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ. ΠΠ½Π° Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ sqlite3.
ΠΡΠΊΡΠΎΠΉΡΠ΅ ΠΏΠ°ΠΏΠΊΡ c:\dev Π² ΠΏΡΠΎΠ²ΠΎΠ΄Π½ΠΈΠΊΠ΅ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π½Π°ΡΡ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° msys.bat. Π Π½Π΅ΠΉ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/sqlite3/ --with-sqlite3-lib=/c:/sqlite3/.libs/
ΠΡΠ»ΠΈ Π²ΡΡ ΠΏΡΠΎΡΠ»ΠΎ Π³Π»Π°Π΄ΠΊΠΎ, ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΅ΡΡ ΠΎΠ΄Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅: ΡΠΊΠΎΠΏΠΈΡΡΠΉΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ c:\sqlite\.libs\libsqlite3-0.dll
c:\Ruby22\bin (ΠΈΠ»ΠΈ Π² ΡΡ ΠΏΠ°ΠΏΠΊΡ, ΠΊΡΠ΄Π° Π²Ρ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»ΠΈ RubΡ).ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ Π½Π°Ρ Π±Π»ΠΎΠΊΠ½ΠΎΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Ρ ΠΊΠ»Π°ΡΡΠ° Post ΠΌΠ΅ΡΠΎΠ΄ save_to_db, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π±ΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π² Π±Π°Π·Π΅ ΡΡΡΠΎΠΊΡ Ρ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠΌ INSERT ΡΠ°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°:
INSERT INTO posts (type, body, created_at) VALUES ('Memo', 'ΠΠ½Π΅ ΠΏΡΠΈΡΠ½ΠΈΠ»ΡΡ ΡΡΡΠ°Π½Π½ΡΠΉ ΡΠΎΠΊ', '2015.07.08, 10:00')
Π’Π°ΠΊΠΆΠ΅, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ find, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π»ΠΈΠ±ΠΎ ΠΈΡΠΊΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ (Π΅ΡΠ»ΠΈ Π΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ID ΡΡΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ), Π»ΠΈΠ±ΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 10 Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅.
SELECT * FROM posts LIMIT 10;
ΠΡΠΈΡΡΡΠΏΠ°Π΅ΠΌ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π½Π° ruby. ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠΎΠ΄Ρ, Π»ΠΈΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ Π²Π΅ΡΡΠΈΡΠΌ Π±ΡΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Ρ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°):
post.rb:
# ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠ°Π·Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΠΌ sqlite3 # ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π² ΡΠ΅Ρ ΡΠ°ΠΉΠ»Π°Ρ /ΠΊΠ»Π°ΡΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ require 'sqlite3' class Post # Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ class variable # Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π²ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Π² ΡΠ΅Π»ΠΎΠΌ # ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π΅Π·Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² @@SQLITE_DB_FILE = 'notepad.sqlite' # Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ # ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅ Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΈ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ def self.post_types {'Memo' => Memo, 'Task' => Task, 'Link' => Link} end # ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° def self.create(type) return post_types[type].new end def initialize @created_at = Time.now # Π΄Π°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ @text = nil # ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠΈ β ΠΏΠΎΠΊΠ° ΠΏΡΡΡΠΎΠΉ end def read_from_console end def to_strings end # ΠΠ΅ΡΠΎΠ΄ to_db_hash Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Ρ ΡΡ Π²ΠΈΠ΄Π° {'ΠΈΠΌΡ_ΡΡΠΎΠ»Π±ΡΠ°' => 'Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅'} # Π΄Π»Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ def to_db_hash # Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ°ΠΌΠΈ Π·Π½Π°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ±ΡΠΈΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠΎΠ»Ρ # ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅! { # self β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° 'ΡΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ', # ΡΠΎ Π΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, Π³Π΄Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΡΠΎΡ ΠΊΠΎΠ΄ 'type' => self.class.name, 'created_at' => @created_at. to_s } # todo: Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠΎΡ Ρ ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ end # ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²ΠΎΡ ΠΎΠ½ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎΡ ΡΠ°Π½ΡΡΡΠΈΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ def save_to_db db = SQLite3::Database.open(@@SQLITE_DB_FILE) # ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ "ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅" ΠΊ Π±Π°Π·Π΅ SQLite db.results_as_hash = true # Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅, ΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π² Π ΡΠ±ΠΈ Ρ ΡΡΠΈ # Π·Π°ΠΏΡΠΎΡ ΠΊ Π±Π°Π·Π΅ Π½Π° Π²ΡΡΠ°Π²ΠΊΡ Π½ΠΎΠ²ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Ρ ΡΡΠΎΠΌ, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ to_db_hash db.execute( "INSERT INTO posts (" + to_db_hash.keys.join(', ') + # Π²ΡΠ΅ ΠΏΠΎΠ»Ρ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ ") " + " VALUES ( " + ('?,'*to_db_hash.keys.size).chomp(',') + # ΡΡΡΠΎΠΊΠ° ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° _ΠΏΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΠΎΠ²_ ?,?,?... ")", to_db_hash.values # ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Ρ ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π·Π°ΠΏΡΠΎΡ Π²ΠΌΠ΅ΡΡΠΎ _ΠΏΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΠΎΠ²_ ) insert_row_id = db.last_insert_row_id # Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ db.close # Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Π΅ return insert_row_id end # ΠΠΎΠ»ΡΡΠ°Π΅Ρ Π½Π° Π²Ρ ΠΎΠ΄ Ρ ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»Ρ def load_data(data_hash) @created_at = Time. parse(data_hash['created_at']) # todo: ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ end def save file = File.new(file_path, "w:UTF-8") for item in to_strings do file.puts(item) end file.close end def file_path current_path = File.dirname(__FILE__) file_name = @created_at.strftime("#{self.class.name}_%Y-%m-%d_%H-%M-%S.txt") return current_path + "/" + file_name end # ΠΠ°Ρ ΠΎΠ΄ΠΈΡ Π² Π±Π°Π·Π΅ Π·Π°ΠΏΠΈΡΡ ΠΏΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈΠ»ΠΈ ΠΌΠ°ΡΡΠΈΠ² Π·Π°ΠΏΠΈΡΠ΅ΠΉ # ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°Π±Π»ΠΈΡΡ Π½Π° ΡΠΊΡΠ°Π½Π΅ def self.find(limit, type, id) db = SQLite3::Database.open(@@SQLITE_DB_FILE) # ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ "ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅" ΠΊ Π±Π°Π·Π΅ SQLite if id.present? db.results_as_hash = true # Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅, ΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π² Π ΡΠ±ΠΈ Ρ ΡΡΠΈ # Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ, ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° result = db.execute("SELECT * FROM posts WHERE rowid = ?", id) # ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ (Π΅ΡΠ»ΠΈ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΌΠ°ΡΡΠΈΠ²) result = result[0] if result. is_a? Array db.close if result.empty? puts "Π’Π°ΠΊΠΎΠΉ id #{id} Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² Π±Π°Π·Π΅ :(" return nil else # ΡΠΎΠ·Π΄Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° create ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΡΠ°, # ΡΠΈΠΏ ΠΏΠΎΡΡΠ° ΠΌΡ Π²Π·ΡΠ»ΠΈ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² [:type] # Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² Π½Π°ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ post_type Π½Π°ΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Array#find_index post = create(result['type']) # Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΠΎΡ ΠΏΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ post.load_data(result) # ΠΈ Π²Π΅ΡΠ½Π΅ΠΌ Π΅Π³ΠΎ return post end # ΡΡΠ° Π²Π΅ΡΠ²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ else db.results_as_hash = false # Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅, ΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ ΠΠ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π² Π ΡΠ±ΠΈ Ρ ΡΡΠΈ # ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π² Π±Π°Π·Ρ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ query = "SELECT rowid, * FROM posts " query += "WHERE type = :type " unless type.nil? # Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ ΡΠΈΠΏ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ query += "ORDER by rowid DESC " # ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° - ΡΠ°ΠΌΡΠ΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅ query += "LIMIT :limit " unless limit.
nil? # Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ Π»ΠΈΠΌΠΈΡ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ # Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ Π² Π±Π°Π·Ρ, ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΠ² :) statement = db.prepare query statement.bind_param('type', type) unless type.nil? # Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² Π·Π°ΠΏΡΠΎΡ ΡΠΈΠΏ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π»ΡΠΊ :) statement.bind_param('limit', limit) unless limit.nil? # Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π»ΠΈΠΌΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ»Π΅ΠΉΡΡ ΠΎΠ»Π΄Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΌΠΎΡΠΊΠΎΠ²Ρ :) result = statement.execute! #(query) # Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ statement.close db.close return result end end end # PS: ΠΌΠ΅ΡΠΎΠ΄ self.find ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ if β ΡΡΠΎ Π½Π΅ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΡΠΈΠ»Ρ. # # ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ·ΡΡΠ½Π΅Π΅ ΠΈ ΠΏΡΠΎΡΠ΅. # ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π±ΠΈΠ² Π΅Π³ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π² Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ, # ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ β Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΠΌΠ°ΡΡΠΈΠ² # ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Post. ΠΏΡΠΎΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ id ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°) # # ΠΡΡΠ°ΡΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ "ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ" ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² Ruby on Rails
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ΅Π±ΡΠ½ΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄Ρ to_db_hash ΠΈ load_data:
link.:
rb
def to_db_hash
# Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ super ΠΈ ΠΊ Ρ
ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π²Π΅ΡΠ½ΡΠ»
# ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ΅ΠΏΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Hash#merge
return super.merge(
{
'text' => @text,
'url' => @url
}
)
end
# Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»Ρ ΠΈΠ· Ρ
ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
def load_data(data_hash)
super(data_hash) # ΡΠΏΠ΅ΡΠ²Π° Π΄Π΅ΡΠ³Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ
# ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
@url = data_hash['url']
end
memo.rb:
def to_db_hash
# Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ super ΠΈ ΠΊ Ρ
ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π²Π΅ΡΠ½ΡΠ»
# ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ΅ΠΏΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Hash#merge
return super.merge(
{
'text' => @text.join('\n\r') # ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ
}
)
end
# Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»Ρ ΠΈΠ· Ρ
ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
def load_data(data_hash)
super(data_hash) # ΡΠΏΠ΅ΡΠ²Π° Π΄Π΅ΡΠ³Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ
# ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
@text = data_hash['text'].
split('\n\r')
end
task.rb:
def to_db_hash
# Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ super ΠΈ ΠΊ Ρ
ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Π²Π΅ΡΠ½ΡΠ»
# ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ ΠΏΡΠΈΡΠ΅ΠΏΠΎΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Hash#merge
return super.merge(
{
'text' => @text,
'due_date' => @due_date.to_s
}
)
end
# Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ²ΠΎΠΈ ΠΏΠΎΠ»Ρ ΠΈΠ· Ρ
ΡΡ ΠΌΠ°ΡΡΠΈΠ²Π°
def load_data(data_hash)
super(data_hash) # ΡΠΏΠ΅ΡΠ²Π° Π΄Π΅ΡΠ³Π°Π΅ΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΎΠ±ΡΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ
# ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠ²ΠΎΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅
@due_date = Date.parse(data_hash['due_date'])
end
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ new_post.rb:
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ Post ΠΈ Π΅Π³ΠΎ Π΄Π΅ΡΠ΅ΠΉ require_relative 'post.rb' require_relative 'memo.rb' require_relative 'link.rb' require_relative 'task.rb' # ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΎΡΠ΅Π½Ρ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ puts "ΠΡΠΈΠ²Π΅Ρ, Ρ Π±Π»ΠΎΠΊΠ½ΠΎΡ Π²Π΅ΡΡΠΈΡ 2, Π·Π°ΠΏΠΈΡΡΠ²Π°Ρ Π½ΠΎΠ²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Ρ SQLite :)" # Π’Π΅ΠΏΠ΅ΡΡ Π½Π°Π΄ΠΎ ΡΠΏΡΠΎΡΠΈΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΡΡΠΎ ΠΎΠ½ Ρ ΠΎΡΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ puts "Π§ΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ?" # ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²ΠΈΠ΄ΠΎΠ² ΠΠ°ΠΏΠΈΡΠΈ (ΠΏΠΎΡΡΠ°) choices = Post.post_types.keys choice = -1 until choice >= 0 && choice < choices.size # ΠΏΠΎΠΊΠ° ΡΠ·Π΅Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ # Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΡΡΠ° choices.each_with_index do |type, index| puts "\t#{index}. #{type}" end choice = gets.chomp.to_i end # Π²ΡΠ±ΠΎΡ ΡΠ΄Π΅Π»Π°Π½, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Ρ. ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° Post entry = Post.create(choices[choice]) # ΠΡΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ ΠΏΠΎΡΡ (ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΠΎΠ½ Π½ΠΈ Π±ΡΠ») entry.read_from_console # Π‘ΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ rowid = entry.save_to_db puts "ΠΠ°ΠΏΠΈΡΡ ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° Π² Π±Π°Π·Π΅, id = #{rowid}"
Π§ΡΠΎΠ±Ρ ΠΌΠ΅ΡΠΎΠ΄ Post.find ΠΏΠΎΠ»ΡΡΠΈΠ» Π½ΡΠΆΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, Π΅ΠΌΡ ΠΈΡ
Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎ-Π²Π·ΡΠΎΡΠ»ΠΎΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠΊΠΈΠ΄ΡΠ²Π°ΡΡ ΠΈΡ
ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π‘Π½ΠΎΠ²Π° ΡΠ»Π΅Π΄ΠΈΡΠ΅ Π·Π° ΠΌΡΡΠ»ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ°ΠΉΠ»Π΅ read.rb:
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΊΠ»Π°ΡΡ Post ΠΈ Π΅Π³ΠΎ Π΄Π΅ΡΠ΅ΠΉ require_relative 'post.rb' require_relative 'memo.rb' require_relative 'link.rb' require_relative 'task.rb' # Π±ΡΠ΄Π΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ-Π²Π·ΡΠΎΡΠ»ΠΎΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠ΅Ρ.Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ±ΠΈ require 'optparse' # ΠΡΠ΅ Π½Π°ΡΠΈ ΠΎΠΏΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΡΠ΄Π° options = {} # Π·Π°Π²Π΅Π΄Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΎΠΏΡΠΈΠΈ OptionParser.new do |opt| opt.banner = 'Usage: read.rb [options]' opt.on('-h', 'Prints this help') do puts opt exit end opt.on('--type POST_TYPE', 'ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΏΠΎΡΡΠΎΠ² ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ)') { |o| options[:type] = o } # opt.on('--id POST_ID', 'Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ id β ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΠΏΠΎΡΡ') { |o| options[:id] = o } # opt.on('--limit NUMBER', 'ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΠΏΠΎΡΡΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°ΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅)') { |o| options[:limit] = o } # end.parse! result = Post.find(options[:limit], options[:type], options[:id]) if result.is_a? Post # ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΡ puts "ΠΠ°ΠΏΠΈΡΡ #{result.class.name}, id = #{options[:id]}" # Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π²Π΅ΡΡ ΠΏΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΈ Π·Π°ΠΊΡΠΎΠ΅ΠΌΡΡ result.to_strings.each do |line| puts line end else # ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² print "| id\t| @type\t| @created_at\t\t\t| @text \t\t\t| @url\t\t| @due_date \t " result.each do |row| puts # puts '_'*80 row.
each do |element| print "| #{element.to_s.delete("\\n\\r")[0..40]}\t" end end end puts # Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ {...} ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΏΡΠΎΡΡΡΡ ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ do ... end # ΠΠ½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ # # ΡΠΌ. http://stackoverflow.com/questions/5587264/do-end-vs-curly-braces-for-blocks-in-ruby
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π½Π°ΡΠ΅ΠΌ SQlite Manager-Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠ°ΠΊ, ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ Π½Π°ΡΡΠΈΠ»ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ sqlite Π² Π½Π°ΡΠ΅ΠΌ Π±Π»ΠΎΠΊΠ½ΠΎΡΠ΅. ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π°Π»Π΅ΠΊΠ° ΠΎΡ ΠΈΠ΄Π΅Π°Π»Π°: Π½Π΅Π»ΡΠ·Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΄Π°Π»ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π½Π΅Π»ΡΠ·Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ. ΠΠΎ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ.
Π‘ΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈSQLite Π‘ΡΡΠ°Π½ΠΈΡΠ° Π·Π°Π³ΡΡΠ·ΠΊΠΈ
SQLite ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ. ΠΡΡΡΡΡΠΉ. ΠΠ°Π΄Π΅ΠΆΠ½ΡΠΉ.
ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΡΠ±ΡΠ΅ ΡΡΠΈ.
- ΠΠΎΠΌ
- ΠΠ΅Π½Ρ
- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- Π‘ΠΊΠ°ΡΠ°ΡΡ
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
- ΠΠΎΠΊΡΠΏΠΊΠ°
| ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ | |||
sqlite-amalgamation-3420000. zip (2,52 ΠΠ) | ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ | C ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, Π²Π΅ΡΡΠΈΡ 3.42.0. (SHA3-256: 436747dc8090d015b9869b96f5837f745e852d2ce73fd77410ed76ee51107a1f) | |
| sqlite-autoconf-3420000.tar.gz (3,00 ΠΠ) | ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ | C ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Β«Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΒ».
ΠΈ make-ΡΠ°ΠΉΠ»Ρ TEA Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° TCL. (SHA3-256: 643898e9fcc8f6069bcd47b0e6057221c1ed17bbee57da20d2752c79d91274e8) | |
| ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ 9 0027 | |||
| sqlite-doc-3420000.zip (10,17 ΠΠ) | ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ² HTML. (SHA3-256: 6dc0f3bb68bd9a541bbe9c75ec4b2304ba0857e706a21af5fea072136d46995e) | ||
| ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Android | |||
sqlite-android-3420000. aar (3,30 ΠΠ) | ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Android, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ°Ρ ΡΠ΄ΡΠΎ ββSQLite Π²ΠΌΠ΅ΡΡΠ΅
Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°ΠΌΠΈ Java, Π³ΠΎΡΠΎΠ²ΡΠΌΠΈ ΠΊ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π½Π° Π»ΡΠ±ΠΎΠΉ Android
Π‘ΡΡΠ΄ΠΈΠΉΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ. (SHA3-256: c906cf95bdc5b620740d081004f7683b238043cf2c0020286e43a1468363167a) | ||
| ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Linux | |||
| sqlite-tools-linux-x86-3420000.zip (2,18 ΠΠ) | ΠΠ°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite,
Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ sqldiff ΠΈ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° sqlite3_analyzer. (SHA3-256: a9dc5804cb61efc73a66aa61b034589216de9f7e53aa34a64dd2268d8e85bfdb) | ||
| ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Mac OS X (x86) | |||
sqlite-tools-osx- x86-3420000. zip (1,56 ΠΠ) | ΠΠ°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite,
Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ sqldiff ΠΈ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° sqlite3_analyzer. (SHA3-256: 87a4dd36c3781a13181657cee85bf0e335554de3d89e7dbbe306c4a9b292f5d1) | ||
| ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π΄Π»Ρ Windows | |||
| sqlite-dll-win32-x86-3420000.zip (570,83 ΠΠΈΠ) | 32-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ DLL (x86) Π΄Π»Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.42.0. (SHA3-256: 5edbd7244c91cae59dedfea6cdea6f9683116b034a0d18495e2aeb4a9592c87a) | ||
| sqlite-dll- win64-x64-3420000.zip (1,16 ΠΠ) | 64-ΡΠ°Π·ΡΡΠ΄Π½Π°Ρ DLL (x64) Π΄Π»Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.42.0. (SHA3-256: 2425efa95556793a20761dfdab0d3b56a52e61716e8bb65e6a0a3590d41c97c0) | ||
sqlite-tools-win32-x86-3420000. zip (1,93 ΠΠ) | ΠΠ°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite,
Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ sqldiff.exe ΠΈ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° sqlite3_analyzer.exe. (SHA3-256: 93d10287cd1a20dce57bb671bcd620cc827c3a316660326338cff0478514e6ee) | ||
| ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π±ΠΈΠ½ ΠΠ²Π΅Π½ Π΄Π»Ρ .NET | |||
| System.Data.SQLite | ΠΠΎΡΠ΅ΡΠΈΡΠ΅ System.Data.SQLite.org Π²Π΅Π±-ΡΠ°ΠΉΡ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ SQLite Π΄Π»Ρ .NET. | ||
| WebAssembly ΠΈ JavaScript | |||
| sqlite-wasm-3420000.zip (782,10 ΠΠΈΠ) | ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΈΠ· sqlite3.wasm ΠΈ Π΅Π³ΠΎ
API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ JavaScript, Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
. (SHA3-256: 9c280e2865d7877768c15d9942993e57024ef39ede000ea846e8f8b70ce) | ||
| ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° | |||
| sqlite-src-3420000.zip (13 0,27 ΠΠ) | ΠΠΎΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠΌΠΎΠΊ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ (Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ) ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π° Π΄Π»Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.42.0.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΌ. ΠΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ SQLite. (SHA3-256: f28b48f90cad0ec3c726ef99dfc44d52110e3e8cb829a309d4ffa77fe4958994) | ||
| sqlite-ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ -3420000.zip (2,63 ΠΠ) | ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ C Π΄Π»Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.42.0. (SHA3-256: 0be58ac254a3a84f402d020873d7c631593a5f4f59fb5b49f78f60f8a5db915e) | ||
ΠΠ°Π·Π²Π°Π½ΠΈΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ
ΠΡΠΎΠ΄ΡΠΊΡΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠΌΠ΅Π½ΡΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²:
- sqlite- ΠΏΡΠΎΠ΄ΡΠΊΡ — Π²Π΅ΡΡΠΈΡ .
zip - sqlite- ΠΏΡΠΎΠ΄ΡΠΊΡ — Π²Π΅ΡΡΠΈΡ .tar.gz
- sqlite- ΠΏΡΠΎΠ΄ΡΠΊΡ — ΠΠ‘ — ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ — Π²Π΅ΡΡΠΈΡ .zip
- sqlite- ΠΏΡΠΎΠ΄ΡΠΊΡ — Π΄Π°ΡΠ° .zip
Π¨Π°Π±Π»ΠΎΠ½Ρ (1) ΠΈ (2) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π¨Π°Π±Π»ΠΎΠ½ (1) Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (2) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΄ΡΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . Π¨Π°Π±Π»ΠΎΠ½ (3) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². Π¨Π°Π±Π»ΠΎΠ½ (4) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Β«ΡΠ½ΠΈΠΌΠΊΠΈΒ» ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΡΠΈΡ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΎΡΡΠΈΡΡΡΡΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈ ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Β«lsΒ». ΠΠ»Ρ Π²Π΅ΡΡΠΈΠΈ 3.X.Y ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° 3XXYY00. ΠΠ»Ρ Π²Π΅ΡΠΊΠΈ Π²Π΅ΡΡΠΈΠΈ 3.X.Y.Z ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ° 3XXYZZ.
ΠΠ°ΡΠ° Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ (4) ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄: ΠΠΠΠΠΠΠΠΠ§Π§ΠΠ.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΡ
URL-Π°Π΄ΡΠ΅ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ Π½ΠΈΠΌΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ HTML-ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π² ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΅ ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ.
ΠΠ³ΠΎ ΠΏΠ΅ΡΠ²Π°Ρ ΡΡΡΠΎΠΊΠ° (Π±Π΅Π· Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³Π°) Π³Π»Π°ΡΠΈΡ:
ΠΠ°Π³ΡΡΠ·ΠΊΠ° Π΄Π°Π½Π½ΡΡ ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ΅ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π²ΠΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ CSV Ρ ΡΠ°ΠΊΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ°:
ΠΠ ΠΠΠ£ΠΠ’, ΠΠΠ Π‘ΠΠ―, ΠΠ’ΠΠΠ‘ΠΠ’ΠΠΠ¬ΠΠ«Π URL, Π ΠΠΠΠΠ Π ΠΠΠΠ’ΠΠ₯, SHA3-HASHΠΠ°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΡΡΠΎΠ»Π±ΡΠ° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π΅Π»Π°. Π‘ΡΠΎΠ»Π±Π΅Ρ ΠΠ ΠΠΠ£ΠΠ’ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ («ΠΠ ΠΠΠ£ΠΠ’») Π΄Π»Ρ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΡΡΠ³ΠΈΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π³ΠΎΠ²ΠΎΡΡΡ ΡΠ°ΠΌΠΈ Π·Π° ΡΠ΅Π±Ρ. ΠΡΠΎΡ ΡΠΎΡΠΌΠ°Ρ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΌ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ². Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΡΠΏΡΠ°Π²Π° ΠΎΡ ΡΡΠ°ΡΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ².
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ SQLite ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ΅Ρ
Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π½Π΅ΡΠ΅Π½Π½ΡΡ
ΡΠ°ΠΌΠΎΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉΡΡ
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈΡΠΊΠΎΠΏΠ°Π΅ΠΌΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅
Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ. ΠΡΠ±ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ
ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ
ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ZIP-Π°ΡΡ
ΠΈΠ²ΠΎΠ² ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΌ. Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ SQLite. ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ SQLite. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ Tcl ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΠ· ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ. ΠΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΡΠ°ΠΉΠ»Ρ sqlite3.c ΠΈ sqlite3.h) ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΡ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ Π΄Π΅ΡΠ΅Π²Π΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
https://www.sqlite.org/cgi/src (ΠΠ°Π»Π»Π°Ρ)
https://www2.sqlite.org/cgi/src (ΠΡΡΠ°ΡΠΊ)
https://www3.sqlite.org/cgi/src (Π‘Π°Π½-Π€ΡΠ°Π½ΡΠΈΡΠΊΠΎ) )
ΠΠ΅ΡΠΊΠ°Π»ΠΎ GitHub Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ
https://github.com/sqlite/sqlite/
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΈΡΠΊΠΎΠΏΠ°Π΅ΠΌΡΡ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ:
https://www.sqlite.org/cgi/docsrc (ΠΠ°Π»Π»Π°Ρ)
https://www2.sqlite.org/cgi/docsrc (ΠΡΡΠ°ΡΠΊ)
https://www3.sqlite.org/cgi/docsrc (Π‘Π°Π½-Π€ΡΠ°Π½ΡΠΈΡΠΊΠΎ) )
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ SQLite
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ SQLite ΠΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ.
ΠΡΡΡΡΡΠΉ. ΠΠ°Π΄Π΅ΠΆΠ½ΡΠΉ.
ΠΡΠ±Π΅ΡΠΈΡΠ΅ Π»ΡΠ±ΡΠ΅ ΡΡΠΈ.
- ΠΠΎΠΌ
- ΠΠ΅Π½Ρ
- Π ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ
- ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- Π‘ΠΊΠ°ΡΠ°ΡΡ
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
- ΠΠΎΠΊΡΠΏΠΊΠ°
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
ΠΠΎΠΈΡΠΊ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈΠΠΎΠΈΡΠΊ Π² ΠΆΡΡΠ½Π°Π»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
- βΌ Π‘ΠΏΠΈΡΠΊΠΈ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠ»ΡΠ°Π²ΠΈΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
- ΠΠ½Π΄Π΅ΠΊΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² Π²Π΅Π±-ΡΠ°ΠΉΡΠ°
- ΠΠ΅ΡΠ΅ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
- βΊ ΠΠ±Π·ΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
- Π SQLite β ΠΠ±ΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ SQLite ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°Π½ Π² Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
- ΠΠ°Π΄Π»Π΅ΠΆΠ°ΡΠ΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ SQLite β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π΄Π° SQLite ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΡΠΈΡΡΠ°ΡΠΈΡΠΌΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ/ΡΠ΅ΡΠ²Π΅Ρ ΡΠ΄ΡΠΎ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ.
- ΠΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
β
Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
SQLite, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠ² Π±Π°Π· Π΄Π°Π½Π½ΡΡ
SQL.

- ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ SQLite β ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ SQLite. ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π²ΡΠ·ΡΠ²Π°ΡΡ Π½Π΅Π΄ΠΎΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΠΏΡΡΠ°Π½ΠΈΡΡ. Π‘ΠΏΠΈΡΠΎΠΊ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π½Π°ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ΡΡΠ²Π°, ΡΠ°ΠΊ ΠΈ Β«Π½Π΅Π΄ΠΎΡΠ΅ΡΡΒ», ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
- ΠΠ°ΠΊ ΡΠ΅ΡΡΠΈΡΡΠ΅ΡΡΡ SQLite β ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ SQLite Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π² Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΈ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π²ΡΠΏΡΡΠΊΠΎΠΌ SQLite.
- ΠΠ²ΡΠΎΡΡΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΎ β SQLite Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΠ±ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π΄ΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ Π΄Π»Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ².
- Π§Π°ΡΡΠΎ Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ β Π Π½Π°Π·Π²Π°Π½ΠΈΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΎ…
- ΠΠ½ΠΈΠ³ΠΈ ΠΎ SQLite β Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ SQLite.
- βΊ ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- SQLite Π·Π° 5 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅
β
ΠΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SQLite.

- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² API C/C++ β ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ Π·Π½Π°ΠΊΠΎΠΌΠΈΡ Ρ C/C++ API. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΡΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎ C/C++ API, ΡΡΡΠ»ΠΊΠ° Π½Π° ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π½ΠΈΠΆΠ΅.
- ΠΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ SQLite β ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΈ ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° SQLite C ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ Ρ Π²Π°ΡΠΈΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.
- Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΠΏΠΎ API C/C++ β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ API ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
- ΠΠΎΠ΄Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΡΠ»ΠΎΠ²ΡΡ ΠΊΠΎΠ΄ΠΎΠ² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ C/C++.
- Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ SQL β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ·ΡΠΊ SQL, ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ SQLite.
- ΠΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠ°Π³ΠΌΡ β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ SQLite ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SQL β ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΊΠ°Π»ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SQL ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
- ΠΠ³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SQL
β
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ SQL ΠΎΠ±ΡΠ΅Π³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.

- ΠΠ°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ Π€ΡΠ½ΠΊΡΠΈΠΈ SQL β Π€ΡΠ½ΠΊΡΠΈΠΈ SQL Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
- ΠΠΊΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ β Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΊΠ½Π° SQL.
- Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ β Π‘ΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠ΅ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΡ ΡΠ°Π±Π»ΠΈΡ.
- Π‘ΠΈΡΡΠ΅ΠΌΠ°.ΠΠ°Π½Π½ΡΠ΅.SQLite β ΠΡΠΈΠ²ΡΠ·ΠΊΠΈ C#/.NET Π΄Π»Ρ SQLite
- Tcl API β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° TCL Π΄Π»Ρ SQLite.
- Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ β SQLite Π²Π΅ΡΡΠΈΠΈ 3 Π²Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΠ°, Π³Π΄Π΅ ΡΠΈΠΏ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²ΡΠ·Π°Π½ Ρ ΡΠ°ΠΌΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π° Π½Π΅ ΡΠΎ ΡΡΠΎΠ»Π±ΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ Ρ ΡΠ°Π½ΠΈΡΡΡ Π². ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.
- SQLite Π·Π° 5 ΠΌΠΈΠ½ΡΡ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠ΅
β
ΠΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ SQLite.
- βΊ Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ
- Json1 β ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ JSON β Π€ΡΠ½ΠΊΡΠΈΠΈ SQL Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ JSON.
- FTS5 β ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΠΎΠΈΡΠΊ β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° SQLite (FTS5).
- FTS3 β ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΠΏΠΎΠΈΡΠΊ β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° SQLite (FTS3).
- ΠΠΎΠ΄ΡΠ»Ρ R-Tree
β
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ SQLite R-Tree.
R-Tree β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΡΡΡΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π³Π΅ΠΎΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
. - Π‘Π΅Π°Π½ΡΡ β Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Sessions ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQLite. Π·Π°Ρ Π²Π°ΡΠ΅Π½ Π² ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Β«ΠΎΡΠΌΠ΅Π½ΡΒ») ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½Ρ ΠΊ Π΄ΡΡΠ³ΠΎΠΌΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ .
- ΠΠ°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ β ΠΠ±ΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ, ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ SQLite.
- ΠΡΠΈΠ²ΡΠ·ΠΊΠΈ SQLite Π΄Π»Ρ Android β ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ°ΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ SQLite Π½Π° Android, ΠΌΠΈΠ½ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ SQLite, Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡ ΠΆΠ΅ Java ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
- ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Dbstat
β
ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° DBSTAT ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°Ρ
ΠΈ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΠΈ ΡΠ°Π±Π»ΠΈΡ.
Ρ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
SQLite ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ
Π£ΡΠΈΠ»ΠΈΡΠ° [sqlite3_analyzer].

- ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° Csv β ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π±Π»ΠΈΡΠ° CSV ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ SQLite Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ [https://www.ietf.org/rfc/rfc4180.txt|RFC 4180].
- ΠΠ°ΡΡΠ΅ΠΉ β CARRAY β ΡΡΠΎ [ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ], ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΡΠ·ΡΠΊΠ° C ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°ΠΏΡΠΎΡΠ°Ρ SQL.
- generate_series β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ generate_series() [ΡΡΠ½ΠΊΡΠΈΡ Ρ ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ].
- Π‘ΠΏΠ΅Π»Π»ΡΠΈΠΊΡ1 β Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Spellfix1 β ΡΡΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ ΠΏΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΡΠΎΠ³ΡΠ°ΡΠΈΠΈ. Π΄Π»Ρ [ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°].
- βΊ ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ
- 8+3 ΠΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² β ΠΠ°ΠΊ Π·Π°ΡΡΠ°Π²ΠΈΡΡ SQLite ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ 8+3 ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π°.
- ΠΠ²ΡΠΎΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° AUTOINCREMENT Π² SQLite, ΡΡΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ, Π΅ΡΠ»ΠΈ Π½Π΅Ρ ΡΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
- API ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ
β
[sqlite3_backup_init | ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ] ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ
ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΈΠ· ΡΠ°ΠΉΠ»Π° Π½Π° Π΄ΠΈΡΠΊΠ΅ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ
Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π³ΠΎΡΡΡΡΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΡΡ ΠΊΠΎΠΏΠΈΡ Π°ΠΊΡΠΈΠ²Π½ΠΎΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ Π΄Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ. - ΠΡΡΠ½Π°Π» ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ β SQLite ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΈΠ·Π°ΠΉΠ½ Β«ΠΆΡΡΠ½Π°Π»Π° ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉΒ» Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ. ΠΎ ΠΏΠΎΠ΄ΠΎΠ·ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈ/ΠΈΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΡΠΎΠ±ΡΡΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΆΡΡΠ½Π°Π» ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΎΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π² ΠΏΠΎΠ»Π΅Π²ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ . Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ° β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ°. Π² Π²Π΅ΡΡΠΈΠΈ 3.6.19.
- ΠΠ½Π΄Π΅ΠΊΡΡ Π² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ β ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ»Π±ΡΡ.
- ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΈ Π²Π½Π΅ΡΠ½Π΅Π΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ BLOB-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² β Π‘Π»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ BLOB-ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ Ρ ΡΠ°Π½ΠΈΡΡ ΠΈΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΈ ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ? ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ»ΠΈΡΡ ΡΠ²Π΅Ρ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ.
- ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² SQLite
β
ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ SQLite (ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π°
ΡΡΡΠΎΠΊΠ° ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄Π²ΠΎΠΈΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ
ΡΠ°Π±Π»ΠΈΡΡ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
ΠΈ Ρ.
Π΄.) ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π²
Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. - ΠΠ²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ β SQLite ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ. Π£Π·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΈ ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄ Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅.
- ΠΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ SQLite β SQLite Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ . ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΡΠΎΠ²Π΅ΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
- ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½ΡΠ»Π΅ΠΉ β Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ SQL ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ NULL ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. Π‘ΡΠ°Π½Π΄Π°ΡΡΡ SQL Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½Ρ. ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ (ΠΎΠΊΠΎΠ»ΠΎ 2003 Π³.) ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΊΠ°ΠΊ SQLite ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ NULL ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°ΠΌΠΈ Π±Π°Π· Π΄Π°Π½Π½ΡΡ SQL.
- Π§Π°ΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ
β
Π§Π°ΡΡΠΈΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ β ΡΡΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡ
Π²Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π²
ΡΡΠΎΠ». Π£Π·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² SQLite ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°.

- Π Π΅ΠΆΠΈΠΌ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΡΡΠ° β ΠΠ΅ΡΡΠΈΡ 3.3.0 ΠΈ Π²ΡΡΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π²ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΡΡΠ° ΡΡ Π΅ΠΌΡ. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½Π° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- Π Π°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π£Π²Π΅Π΄ΠΎΠΌΠΈΡΡ β Π€ΡΠ½ΠΊΡΠΈΡ Β«ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅Β» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ [ΡΠ΅ΠΆΠΈΠΌ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΡΡΠ°] Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°ΠΌΠΈ ΡΠ΅ΡΡΡΡΠΎΠ² (Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ ΡΡΠΎΠ»ΠΎΠ²ΡΠ΅ Π·Π°ΠΌΠΊΠΈ).
- ΠΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² URI β ΠΠΌΠ΅Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π° ΠΈΠ»ΠΈ URI. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΉΠ»ΠΎΠ² URI ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅.
- ΠΠΠ ROWID Π’Π°Π±Π»ΠΈΡΡ β ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΠΠ ROWID β ΡΡΠΎ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΡΡ Π±Π°Π·Π°Ρ Π΄Π°Π½Π½ΡΡ .
- Π Π΅ΠΆΠΈΠΌ ΠΆΡΡΠ½Π°Π»Π° ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ (WAL)
β
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΆΡΡΠ½Π°Π»Π° Ρ ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ
ΡΠ°ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΎΡΠΊΠ°ΡΠ° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ WAL Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
- βΊ ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
- ΠΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ (sqlite3.exe) β ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΡ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ sqlite3.exe, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ SQLite ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
- ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQLite (sqlite3_analyzer.exe) β ΠΡΠ° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΡΠ°Π΅Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQLite ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠΊΠ°Π· ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΠ΅ΠΉ, ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠΎΠΉ. ΠΠΎΡΡΡΠΎΠ΅Π½ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ [Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ dbstat].
- Π ΠΠ£ β Π‘Π»ΡΠΆΠ΅Π±Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Β«Resumable Bulk UpdateΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½ΠΎΡΠΈΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΊ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΉ Π½Π° Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Π² ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°ΡΡ ΡΠ΅ΠΊΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
- Π Π°Π·Π½ΠΈΡΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite (sqldiff.exe)
β
ΠΡΠ° Π°Π²ΡΠΎΠ½ΠΎΠΌΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΡΠ°ΠΉΠ»Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite ΠΈ
Π²ΡΠ²ΠΎΠ΄ΠΈΡ SQL, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΉ Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠ΅.

- Π₯ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (dbhash.exe) β ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ, ΠΊΠ°ΠΊ Π²ΡΡΠΈΡΠ»ΠΈΡΡ Ρ ΡΡ Π½Π°Π΄ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQLite.
- ΠΡΠΊΠΎΠΏΠ°Π΅ΠΌΠΎΠ΅ β Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Fossil β ΡΡΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ SQLite. Fossil ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SQLite Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°.
- ΠΡΡ ΠΈΠ²Π°ΡΠΎΡ SQLite (sqlar.exe) β ZIP-ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π°ΡΡ ΠΈΠ²Π°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ SQLite Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ.
- βΊ ΠΠ°ΡΠΈΡΠ° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²
- SQLite ΠΊΠ°ΠΊ ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ β Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ SQLite Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΡΠΌΠ°ΡΠ° ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π²ΠΌΠ΅ΡΡΠΎ XML ΠΈΠ»ΠΈ JSON ΠΈΠ»ΠΈ Β«ΠΊΡΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Β».
- ΠΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ β ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΡΡΡ ΡΡΡΡΠΎΠΉΡΡΠ². ΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ SQLite.
- ΠΠ° 35% Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°
β
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ
Π΄Π²ΠΎΠΈΡΠ½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQLite
ΡΠ°ΡΡΠΎ Π±ΡΡΡΡΠ΅Π΅, ΡΠ΅ΠΌ ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΈΡ
ΠΈ ΡΠ΅Ρ
ΠΆΠ΅ Π±ΠΎΠ»ΡΡΠΈΡ
Π΄Π²ΠΎΠΈΡΠ½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΠ· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π²
ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°.

- βΊ Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- ΠΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ β SQLite ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡΡ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΡΠΈΠ±ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ, ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΡΠ°ΠΉΠ»Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ SQLite ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΡΡΠΈΡΡΡΡ.
- ΠΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ SQLite β SQLite ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² SQL. Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ SQLite ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ , Π³Π΄Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΠΎΠ³Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
- ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ β SQLite ΠΎΠ±ΡΡΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠ°ΠΉΠ»Π΅ Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ.
- ΠΠ°ΠΊ SQLite ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΡ ΡΠΈΠΊΡΠ°ΡΠΈΡ
β
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² SQLite, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ
ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΠΉ ΡΠΈΠΊΡΠ°ΡΠΈΠ΅ΠΉ, Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π»ΠΈΡΠΎΠΌ Π²Π»Π°ΡΡΠΈ
Π½Π΅ΡΠ΄Π°ΡΠΈ.

- ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² SQLite β SQLite ΠΈΠΌΠ΅Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠ΅ ΠΊ Π½Π΅Ρ Π²Π°ΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π±Π΅Π· ΡΡΠ΅ΡΠ΅ΠΊ. Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ.
- ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ SQLite β Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ±ΠΎΡΠΊΡ SQLite ΠΈ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ SQLite Π½Π° Π½ΠΎΠ²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
- ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ
Π SQLite Π²Π΅ΡΡΠΈΠΈ 3 β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² Π²Π΅ΡΡΠΈΠΈ 3 ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΈ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π³ΠΎΠ»ΠΎΠ΄Π°Π½ΠΈΡ ΠΏΠΈΡΠ°ΡΠ΅Π»Ρ. - ΠΠ·ΠΎΠ»ΡΡΠΈΡ Π² SQLite β ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ SQLite Β«ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΡΒ», ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ? ΠΠ°ΠΊ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΡΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ?
- ΠΠ±Π·ΠΎΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ° β ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΠΊΠΎΠ΄Π° SQLite.
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ
β
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ΅ Π·Π°ΠΏΡΠΎΡΠΎΠ² SQLite ΠΈ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ,
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π΄ΡΠ΅Π΅ Π΄Π»Ρ Π²Π΅ΡΡΠΈΠΈ 3.
8.0. - ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° β ΠΠ±Π·ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SQLite, ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ Π²Π·Π»ΠΎΠΌΠ°ΡΡ ΠΊΠΎΠ΄.
- ΠΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ VDBE β ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ VDBE. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΊΠ°ΠΊ ΡΡΡΠ»ΠΊΠ° Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠΎΠ² EXPLAIN ΠΈΠ· SQLite.
- ΠΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΠΉΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° β ΠΠ±ΡΠ΅ΠΊΡ Β«VFSΒ» β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΄ΡΠΎΠΌ SQLite ΠΈ Π±Π°Π·ΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°. Π£Π·Π½Π°ΠΉΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ VFS ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ VFS ΠΈΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
- ΠΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΎΠ»Ρ β Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ ΠΈ API Π² SQLite, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ SQLite.
- Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° SQLite
β
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΈ ΠΆΡΡΠ½Π°Π»ΠΎΠ² SQLite, ΠΈ
Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ, Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΠΈ SQLite
Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SQLite.

- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π²ΠΎΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
- ΠΡΠΈΠ²ΡΠ·ΠΊΠΈ Android Π΄Π»Ρ SQLite β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ SQLite Π΄Π»Ρ Android (Π² ΠΎΠ±Ρ ΠΎΠ΄ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ Π² Android SQLite) Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠ΄ ΠΈ make-ΡΠ°ΠΉΠ»Ρ.
- Π‘ΠΎΠ²Π΅ΡΡ ΠΏΠΎ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ β Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ΅ΠΌΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΡ, ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ SQLite.
- βΊ ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ SQLite, ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ
- ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ SQLite 3.5 Π½Π° 3.6 β ΠΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.5.9. ΠΈ 3.6.0.
- ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ Ρ SQLite 3.4 Π½Π° 3.5 β ΠΠΎΠΊΡΠΌΠ΅Π½Ρ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ SQLite Π²Π΅ΡΡΠΈΠΈ 3.4.2. ΠΈ 3.5.0.
- ΠΡΡΠΎΡΠΈΡ Π²ΡΠΏΡΡΠΊΠΎΠ² β Π₯ΡΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ Π²ΡΠΏΡΡΠΊΠΎΠ² SQLite, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.0.
- ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ
β
Π ΡΡΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΠ΅ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² SQLite.
ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.0. - Π§Π°ΡΡΠ½ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ΠΈΡ β ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π΄Π»Ρ Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ»ΠΈΠ°Π»Π° ΠΈΠ»ΠΈ Π²Π΅ΡΠΊΡ SQLite ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡ ΡΡΡ Π²Π΅ΡΠΊΡ ΠΈΠ»ΠΈ Π²Π΅ΡΠΊΡ Ρ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ SQLite.
- βΊ Π£ΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ
- ΠΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° β ΠΠ° ΡΡΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ SQLite. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ ΡΠ΄Π΅Π»Π°ΡΡ SQLite Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΡΠΌ. ΠΏΡΡΠ΅ΠΌ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΠ½ΠΎΠ²ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ. ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΡΠ°ΡΠ΅Π»ΠΎ. [Π Π΅ΠΆΠΈΠΌ WAL] ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΌΠ΅Π½Ρ.
- ΠΠ΅ΡΡΠΈΡ 2 API C/C++ β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° C/C++ Π΄Π»Ρ SQLite ΠΏΠΎ Π²Π΅ΡΡΠΈΠΈ. 2,8
- Π’ΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΠΈ 2 β ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ SQLite Π²Π΅ΡΡΠΈΠΈ 2 ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ SQL. ΠΡΠ°ΡΠΊΠΎΠ΅ ΡΠ΅Π·ΡΠΌΠ΅: Π²ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ.
- VDBE Π£ΡΠ΅Π±Π½ΠΈΠΊ
β
VDBE β ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° Π² SQLite, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ°Π±ΠΎΡΡ
Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² SQL.








is_a? Array
db.close
if result.empty?
puts "Π’Π°ΠΊΠΎΠΉ id #{id} Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ Π² Π±Π°Π·Π΅ :("
return nil
else
# ΡΠΎΠ·Π΄Π°Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° create ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΏΠΎΡΡΠ°,
# ΡΠΈΠΏ ΠΏΠΎΡΡΠ° ΠΌΡ Π²Π·ΡΠ»ΠΈ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² [:type]
# Π½ΠΎΠΌΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² Π½Π°ΡΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅ post_type Π½Π°ΡΠ»ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Array#find_index
post = create(result['type'])
# Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ ΡΡΠΎΡ ΠΏΠΎΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ
post.load_data(result)
# ΠΈ Π²Π΅ΡΠ½Π΅ΠΌ Π΅Π³ΠΎ
return post
end
# ΡΡΠ° Π²Π΅ΡΠ²Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
else
db.results_as_hash = false # Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π±Π°Π·Π΅, ΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ· Π±Π°Π·Ρ ΠΠ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π² Π ΡΠ±ΠΈ Ρ
ΡΡΠΈ
# ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ Π·Π°ΠΏΡΠΎΡ Π² Π±Π°Π·Ρ Ρ Π½ΡΠΆΠ½ΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ
query = "SELECT rowid, * FROM posts "
query += "WHERE type = :type " unless type.nil? # Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ ΡΠΈΠΏ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅
query += "ORDER by rowid DESC " # ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ° - ΡΠ°ΠΌΡΠ΅ ΡΠ²Π΅ΠΆΠΈΠ΅ Π² Π½Π°ΡΠ°Π»Π΅
query += "LIMIT :limit " unless limit.
nil? # Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ Π»ΠΈΠΌΠΈΡ, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅
# Π³ΠΎΡΠΎΠ²ΠΈΠΌ Π·Π°ΠΏΡΠΎΡ Π² Π±Π°Π·Ρ, ΠΊΠ°ΠΊ ΠΏΠ»ΠΎΠ² :)
statement = db.prepare query
statement.bind_param('type', type) unless type.nil? # Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π² Π·Π°ΠΏΡΠΎΡ ΡΠΈΠΏ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π»ΡΠΊ :)
statement.bind_param('limit', limit) unless limit.nil? # Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ Π»ΠΈΠΌΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ»Π΅ΠΉΡΡ
ΠΎΠ»Π΄Π΅ΡΠ°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΌΠΎΡΠΊΠΎΠ²Ρ :)
result = statement.execute! #(query) # Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ
statement.close
db.close
return result
end
end
end
# PS: ΠΌΠ΅ΡΠΎΠ΄ self.find ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ if β ΡΡΠΎ Π½Π΅ Ρ
ΠΎΡΠΎΡΠΈΠΉ ΡΡΠΈΠ»Ρ.
#
# ΠΠΎΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΠΈ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ Π΅Π³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ·ΡΡΠ½Π΅Π΅ ΠΈ ΠΏΡΠΎΡΠ΅.
# ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°Π·Π±ΠΈΠ² Π΅Π³ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠ°Π² Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ,
# ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ β Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π» ΠΌΠ°ΡΡΠΈΠ²
# ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Post. ΠΏΡΠΎΡΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Ρ id ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² Π±ΡΠ΄Π΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°)
#
# ΠΡΡΠ°ΡΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ "ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ" ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΡ
ΠΎΠΆΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π² Ruby on Rails
split('\n\r')
end
post_types.keys
choice = -1
until choice >= 0 && choice < choices.size # ΠΏΠΎΠΊΠ° ΡΠ·Π΅Ρ Π½Π΅ Π²ΡΠ±ΡΠ°Π» ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ
# Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π·Π°Π½ΠΎΠ²ΠΎ ΠΌΠ°ΡΡΠΈΠ² Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΏΠΎΡΡΠ°
choices.each_with_index do |type, index|
puts "\t#{index}. #{type}"
end
choice = gets.chomp.to_i
end
# Π²ΡΠ±ΠΎΡ ΡΠ΄Π΅Π»Π°Π½, ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π·Π°ΠΏΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Ρ. ΠΌΠ΅ΡΠΎΠ΄Π° ΠΊΠ»Π°ΡΡΠ° Post
entry = Post.create(choices[choice])
# ΠΡΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²Π΅ΡΡΠΈ ΠΏΠΎΡΡ (ΠΊΠ°ΠΊΠΈΠΌ Π±Ρ ΠΎΠ½ Π½ΠΈ Π±ΡΠ»)
entry.read_from_console
# Π‘ΠΎΡ
ΡΠ°Π½ΡΠ΅ΠΌ ΠΏΠΎΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
rowid = entry.save_to_db
puts "ΠΠ°ΠΏΠΈΡΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π° Π² Π±Π°Π·Π΅, id = #{rowid}"
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ±ΠΈ
require 'optparse'
# ΠΡΠ΅ Π½Π°ΡΠΈ ΠΎΠΏΡΠΈΠΈ Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΡΡΠ΄Π°
options = {}
# Π·Π°Π²Π΅Π΄Π΅ΠΌ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΎΠΏΡΠΈΠΈ
OptionParser.new do |opt|
opt.banner = 'Usage: read.rb [options]'
opt.on('-h', 'Prints this help') do
puts opt
exit
end
opt.on('--type POST_TYPE', 'ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΏΠΎΡΡΠΎΠ² ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π»ΡΠ±ΠΎΠΉ)') { |o| options[:type] = o } #
opt.on('--id POST_ID', 'Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½ id β ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΡ ΠΏΠΎΡΡ') { |o| options[:id] = o } #
opt.on('--limit NUMBER', 'ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
ΠΏΠΎΡΡΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°ΡΡ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅)') { |o| options[:limit] = o } #
end.parse!
result = Post.find(options[:limit], options[:type], options[:id])
if result.is_a? Post # ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΠΎΡΡ
puts "ΠΠ°ΠΏΠΈΡΡ #{result.class.name}, id = #{options[:id]}"
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π²Π΅ΡΡ ΠΏΠΎΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΈ Π·Π°ΠΊΡΠΎΠ΅ΠΌΡΡ
result.to_strings.each do |line|
puts line
end
else # ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
print "| id\t| @type\t| @created_at\t\t\t| @text \t\t\t| @url\t\t| @due_date \t "
result.each do |row|
puts
# puts '_'*80
row.
each do |element|
print "| #{element.to_s.delete("\\n\\r")[0..40]}\t"
end
end
end
puts
# Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ {...} ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΠΏΡΠΎΡΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ do ... end
# ΠΠ½ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ
#
# ΡΠΌ. http://stackoverflow.com/questions/5587264/do-end-vs-curly-braces-for-blocks-in-ruby
zip
aar
zip
zip
zip 


R-Tree β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ
ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΡΡΡΡΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π³Π΅ΠΎΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
.
ΠΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ Π΄Π°Π΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ.
Π΄.) ΠΈ ΠΊΠ°ΠΊ ΡΡΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ Π²
Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρ
ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌ WAL Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.


8.0.
ΡΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ 1.0.0.