해시에 24 개의 항목이있는 간단한 응용 프로그램을 작성하여 프로그램 실행간에 일관되게 유지할 수 있으므로 Berkeley DB (DBM)가이 작업에 적합해야합니다.Berkeley DB 사용량은 얼마나 비쌉니까?
그리고 그것은 단지 재미를위한 것입니다.
하지만 루비와 함께 사용한다면, 사용자가 CTRL-C를 누르면 실행이 중단됩니다. 이 경우 데이터가 엉망이 될 수 있습니까? DB의 값이 63이고, I는 1로 증가하는 경우
예를 들어, CTRL-C는 "가장 현저한"1 인 오른쪽 때 발생할 수 있으므로
63 = 111111 (in binary)
64 = 1000000 (in binary)
(64 될) 서면하지만 0은 쓰여지지 않았습니까? 이 경우 DB의 값은 63 또는 64 대신 127이됩니다. Ruby가 아니고 C에서 사용자가 "닫기 창"또는 "kill"을 사용하여 프로세스를 종료하면 어떻게됩니까? 생각해 보니, 하드 드라이브는 아마도이 바이트 (또는 4 바이트)를 하드 디스크 표면에 한꺼번에 기록하므로 아마 이런 일은 일어나지 않아야합니다.
CTRL-C가이 문제를 일으키지 않으면 전원이 중단되거나 전원 플러그가 누출되면이 문제가 발생할 수 있습니까? 예를 들어 값이 RAM에 처음 캐시되고 하드 디스크에 쓰여지는 동안 전원 플러그가 차고 0이 기록되기 전에 하드 드라이브의 전원이 꺼집니다. 나는 백만 번에 하나를 알고, 이것은 일어나지 않을 것이다. 그러나 이것은 단지 호기심의 문제 일 뿐이다. 내 스크립트가
- 감소시킵니다 동전 값의 경우 사용자가 CTRL-를 누르면 한편
는
- 는
그의 목록에서 사용자에게 "햄버거"를 부여 C, 그리고 위의 (1)과 (2) 사이에서 발생하면 사용자는 동전이 적어지고 햄버거를 얻지 못합니다.
이러한 모든 일이 일어나지 않도록하려면 SleepyCat, SQLite 또는 MySQL을 사용하는 트랜잭션 방식을 사용하는 것이 좋을 것입니까?